2015-06-07 3 views
5

Ich habe eine Verlängerung der Downloads gemacht in Google Chrome zu entfernen:Mit chrome.browsingData.remove() im Inkognito-Modus

chrome.browsingData.remove({ "since": 0 }, { "downloads": true }); 

Wenn ein Download ist in einem normalen Fenster Es funktioniert jedoch, wenn ein Download in einem inkognito Chrome-Fenster erfolgt ist, wird es nicht entfernt. Meine Erweiterung wird im Inkognito-Modus aktiviert und die Hintergrundseite ist in der Lage zu erkennen, wenn ein Download in der inkognito Seite wird unter Verwendung beendet:

chrome.downloads.onChanged.addListener(function(download) { 
    if (download.state && download.state.current == "complete") { 
     // The code here is fired even if the download has been completed in incognito mode 
    } 
} 

Gibt es eine Möglichkeit, die Internetdaten in Inkognito-Fenster von einer Hintergrundseite zu entfernen ?

+1

Dies kann damit zusammenhängen, ob Sie für Ihre Erweiterung den Inkognito-Modus "Spanning" oder "Split" verwenden (https://developer.chrome.com/extensions/manifest/incognito). Ich würde mir vorstellen, wenn Sie den "Spanning" -Modus verwenden würden, würde ein im Inkognito-Modus empfangener Download das Ereignis auslösen, aber der Aufruf zum Löschen der Downloads wird im Haupt-Chrome-Profil ausgelöst - sie sind schließlich separate APIs. Versuchen Sie 'Split'-Modus, wenn Sie nicht bereits haben! –

+0

Versuchen Sie stattdessen, ['chrome.downloads.erase'] (https://developer.chrome.com/extensions/downloads#method-erase) zu verwenden. Nur eine Abhängigkeit von einer einzelnen API zu haben bedeutet weniger zu ändern, wenn etwas veraltet ist! –

+0

@ JimO'Brien Sie können Ihren ersten Kommentar in eine Antwort verwandeln, es ist die perfekte Lösung und Erklärung für dieses Problem! –

Antwort

4

Das Problem, dem Sie gegenüberstehen, ist, dass Ihre Erweiterung in spanning incognito mode ausgeführt wird. Dies bedeutet, dass die Erweiterung unter einem einzigen Prozess ausgeführt wird, der an das Profil angehängt ist, das die Erweiterung installiert hat (d. H. Nicht das Inkognito-Fenster). In dieser Situation löst die chrome.downloads-API das Ereignis onChanged für Downloads sowohl inkognito als auch in normalen Profilen aus, aber die API chrome.browsingData gilt nur für das normale Profil.

Stattdessen möchten Sie split Inkognito-Modus verwenden. Dies bedeutet, dass die Erweiterung in jedem Profil, das sie verwendet, separat ausgeführt wird (d. H. Das Inkognito-Fenster erhält eine eigene laufende Kopie der Erweiterung). Wenn Sie die chrome.browsingData API aufrufen, gilt das für das Fenster, das das Ereignis ausgelöst hat.