// CleanCacheMate - Service Worker // Wird bei Klick auf das Extension-Icon ausgeführt chrome.action.onClicked.addListener(async (tab) => { // Nur auf http/https Seiten ausführen if (!tab.url || (!tab.url.startsWith('http://') && !tab.url.startsWith('https://'))) { console.log('CleanCacheMate: Kann nur auf http/https Seiten ausgeführt werden'); return; } try { // Content Script in den aktiven Tab injizieren await chrome.scripting.executeScript({ target: { tabId: tab.id }, func: cleanSiteData }); // Hard-Refresh nach kurzer Verzögerung (damit Cleanup abgeschlossen ist) setTimeout(() => { chrome.tabs.reload(tab.id, { bypassCache: true }); }, 100); // Visuelles Feedback: Badge kurz anzeigen chrome.action.setBadgeText({ text: '✓', tabId: tab.id }); chrome.action.setBadgeBackgroundColor({ color: '#4CAF50', tabId: tab.id }); setTimeout(() => { chrome.action.setBadgeText({ text: '', tabId: tab.id }); }, 1500); } catch (error) { console.error('CleanCacheMate Fehler:', error); // Fehler-Badge anzeigen chrome.action.setBadgeText({ text: '!', tabId: tab.id }); chrome.action.setBadgeBackgroundColor({ color: '#F44336', tabId: tab.id }); setTimeout(() => { chrome.action.setBadgeText({ text: '', tabId: tab.id }); }, 2000); } }); // Diese Funktion wird im Kontext der Webseite ausgeführt function cleanSiteData() { const results = { serviceWorkers: 0, localStorage: false, sessionStorage: false }; // 1. Service Workers deregistrieren if ('serviceWorker' in navigator) { navigator.serviceWorker.getRegistrations().then(registrations => { registrations.forEach(registration => { registration.unregister(); results.serviceWorkers++; }); console.log(`CleanCacheMate: ${results.serviceWorkers} Service Worker(s) deregistriert`); }); } // 2. LocalStorage leeren try { const localStorageLength = localStorage.length; localStorage.clear(); results.localStorage = true; console.log(`CleanCacheMate: LocalStorage geleert (${localStorageLength} Einträge)`); } catch (e) { console.warn('CleanCacheMate: LocalStorage konnte nicht geleert werden', e); } // 3. SessionStorage leeren try { const sessionStorageLength = sessionStorage.length; sessionStorage.clear(); results.sessionStorage = true; console.log(`CleanCacheMate: SessionStorage geleert (${sessionStorageLength} Einträge)`); } catch (e) { console.warn('CleanCacheMate: SessionStorage konnte nicht geleert werden', e); } console.log('CleanCacheMate: Cleanup abgeschlossen', results); return results; }