2016-09-08 209 views
0

我想清除我的歷史和緩存自動只有當我打開我的瀏覽器,但不是當我重新加載擴展從鉻:/ /擴展。我該怎麼做?我正在談論Chrome瀏覽器JavaScript API。我在Ubuntu 16.04上使用最新版本的Google Chrome。 LE:我做了一個擴展,其中許多事情清除了我的歷史和緩存。 manifest.json中,我有:Chrome加載擴展打開時,我手動重新加載擴展

"background": {"scripts": ["SessionManager.js"],"persistent":true}, 

在SessionManager.js,我有:

function init(){ 
    setTimeout(clean,1); 
} 
function clean(){ 
    chrome.browsingData.remove({},{'appcache':true,'cache':true,'cookies':true,'downloads':true,'fileSystems':true,'formData':true,'history':true,'indexedDB':true,'localStorage':true,'serverBoundCertificates':true,'passwords':true,'pluginData':true,'serviceWorkers':true,'webSQL':true}); 
} 

init(); 

回答

2

您需要chrome.runtime.onStartup event

當您更新/手動重新加載擴展時,其onInstalled事件觸發,但不是onStartup。另一方面,在每次瀏覽器啓動時,您都會收到onStartup事件。

// background script 
chrome.runtime.onStartup.addListener(function() { 
    // Nuke things here, probably with chrome.browsingData API 
}); 

注意,在Chrome瀏覽器的情況下繼續在後臺運行,當關閉最後一個窗口(如Chrome應用仍在運行,或者一些擴展要求"background"許可),重新打開該窗口不會註冊爲onStartup。一種解決方法是使用chrome.windows.onCreated,看是否新打開的窗口是隻有一個:

chrome.windows.onCreated.addListener(function() { 
    chrome.windows.getAll(function(windows) { 
    if (windows.length == 1) { 
     // Chrome was running, but in background: it now "opened" 
    } 
    }); 
}) 
+0

我閱讀說明,它不會做我想做的事。 –

+1

這不是一個有用的描述,爲什麼它不是你想要的。 – Xan

+1

那麼,現在你編輯了你的問題,我不明白爲什麼我的解決方案不適合你。 – Xan