Dateien nach "/" hochladen
Dieser Commit ist enthalten in:
BIN
48x48.png
Normale Datei
BIN
48x48.png
Normale Datei
Binäre Datei nicht angezeigt.
|
Nachher Breite: | Höhe: | Größe: 1.2 MiB |
25
manifest.json
Normale Datei
25
manifest.json
Normale Datei
@ -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
83
service-worker.js
Normale Datei
@ -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;
|
||||||
|
}
|
||||||
In neuem Issue referenzieren
Einen Benutzer sperren