Dateien nach "/" hochladen

Dieser Commit ist enthalten in:
2026-01-21 20:15:48 +00:00
Commit 575797f537
3 geänderte Dateien mit 108 neuen und 0 gelöschten Zeilen

BIN
48x48.png Normale Datei

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 1.2 MiB

25
manifest.json Normale Datei
Datei anzeigen

@ -0,0 +1,25 @@
{
"manifest_version": 3,
"name": "CleanCacheMate",
"version": "1.0.0",
"description": "Löscht Service Workers, LocalStorage und führt einen Hard-Refresh durch",
"permissions": [
"activeTab",
"scripting"
],
"action": {
"default_title": "Cache & Storage leeren + Hard-Refresh",
"default_icon": {
"16": "48x48.png",
"32": "48x48.png",
"48": "48x48.png"
}
},
"background": {
"service_worker": "service-worker.js"
},
"icons": {
"16": "16x16.png",
"48": "48x48.png"
}
}

83
service-worker.js Normale Datei
Datei anzeigen

@ -0,0 +1,83 @@
// 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;
}