UNPKG

dphelper

Version:

dphelper devtools for developers

204 lines (156 loc) 5.9 kB
# browser Complete browser navigation and state management utilities with connection monitoring and HTTP status handling. ## Functions | Function | Description | Example | |----------|-------------|---------| | `state` | Pushes a new state to browser history without reload | `dphelper.browser.state(state, title, url)` | | `forw` | Moves forward in browser history by n steps | `dphelper.browser.forw(1)` | | `back` | Moves backward in browser history by n steps | `dphelper.browser.back(1)` | | `reload` | Reloads the current page | `dphelper.browser.reload()` | | `href` | Navigates to a specific URL | `dphelper.browser.href('https://example.com')` | | `offLine` | Displays an offline message overlay when connection is lost | `dphelper.browser.offLine('Custom offline message')` | | `zoom` | Returns the current browser zoom level as percentage | `dphelper.browser.zoom()` | | `status` | Returns human-readable description of HTTP status codes | `dphelper.browser.status(404)` | | `interlock` | Detects and monitors other active tabs of the same app | `dphelper.browser.interlock((count) => console.log(count))` | ## Description Comprehensive browser management tool that provides: - **History Navigation** - Push state, go forward/back, reload - **URL Management** - Navigate to specific URLs - **Connection Monitoring** - Detect online/offline status - **Display Information** - Get zoom level, HTTP status descriptions - **Multi-tab Detection** - Monitor concurrent tab usage ## Usage Examples ### Changing URL Without Reload (SPA Routing) ```javascript // Add a new history entry without page reload dphelper.browser.state({ page: 'dashboard', userId: 123 }, 'Dashboard', '/dashboard'); // The browser's back button will now work window.addEventListener('popstate', (event) => { console.log('Navigated to:', event.state); }); ``` ### Programmatic Navigation ```javascript // Navigate to a specific URL dphelper.browser.href('/search?q=javascript'); // Navigate to external site dphelper.browser.href('https://google.com'); // Go forward 2 pages in history dphelper.browser.forw(2); // Go back 1 page in history dphelper.browser.back(1); // Reload the page dphelper.browser.reload(); ``` ### Offline Detection Overlay ```javascript // Show default offline message dphelper.browser.offLine(); // Show custom offline message (text is sanitized for security) dphelper.browser.offLine('⚠️ Connection Lost. Please check your internet.'); // The overlay appears automatically when offline // and disappears when connection is restored ``` ### Get Browser Zoom Level ```javascript const zoom = dphelper.browser.zoom(); console.log(zoom); // 100 (or 150, 200, etc. depending on zoom) // Responsive design based on zoom if (zoom > 100) { document.body.classList.add('zoomed-in'); } ``` ### HTTP Status Code Descriptions ```javascript // Get description for common status codes console.log(dphelper.browser.status(200)); // "200 OK" console.log(dphelper.browser.status(201)); // "201 Created" console.log(dphelper.browser.status(301)); // "301 Moved Permanently" console.log(dphelper.browser.status(400)); // "400 Bad Request" console.log(dphelper.browser.status(401)); // "401 Unauthorized" console.log(dphelper.browser.status(403)); // "403 Forbidden" console.log(dphelper.browser.status(404)); // "404 Not Found" console.log(dphelper.browser.status(500)); // "500 Internal Server Error" // Display user-friendly error messages function handleApiError(statusCode) { const message = dphelper.browser.status(statusCode); alert(`Error: ${message}`); } ``` ### Multi-Tab Synchronization ```javascript // Monitor active tabs of your application dphelper.browser.interlock((tabCount) => { console.log(`Active tabs: ${tabCount}`); if (tabCount > 1) { // Warn user about multiple tabs showNotification('This app is open in multiple tabs. Changes may conflict.'); } }); // Use BroadcastChannel for real-time sync between tabs const channel = new BroadcastChannel('app_sync'); channel.postMessage({ type: 'UPDATE', data: 'new value' }); ``` ## Advanced Usage ### Complete SPA Navigation Handler ```javascript class Router { constructor() { this.routes = {}; // Handle browser back/forward window.addEventListener('popstate', (e) => { this.navigate(window.location.pathname, false); }); } addRoute(path, handler) { this.routes[path] = handler; } navigate(path, addToHistory = true) { const handler = this.routes[path]; if (handler) { if (addToHistory) { dphelper.browser.state({ path }, 'App', path); } handler(); } } } // Usage const router = new Router(); router.addRoute('/', () => renderHome()); router.addRoute('/about', () => renderAbout()); router.addRoute('/dashboard', () => renderDashboard()); ``` ### Connection Status Manager ```javascript class ConnectionManager { constructor() { this.isOnline = navigator.onLine; this.listeners = []; window.addEventListener('online', () => { this.isOnline = true; this.notifyListeners(); }); window.addEventListener('offline', () => { this.isOnline = false; this.notifyListeners(); }); // Show offline overlay dphelper.browser.offLine('🔌 You are offline. Some features are disabled.'); } onStatusChange(callback) { this.listeners.push(callback); } notifyListeners() { this.listeners.forEach(cb => cb(this.isOnline)); } } ``` ## Details - **Author:** Dario Passariello - **Version:** 0.0.2 - **Creation Date:** 20210101 - **Last Modified:** 20260220 - **Environment:** Client-side only (browser) --- *Automatically generated document*