打开Chrome加载扩展程序与手动重新加载扩展程序

时间:2016-09-08 11:48:08

标签: javascript google-chrome google-chrome-extension

我想清除历史记录并仅在我打开浏览器时自动缓存,但不是在我从chrome:// extensions重新加载扩展时。我该怎么做?我正在谈论Chrome JavaScript API。我在Ubuntu 16.04上使用最新版本的Google Chrome。

LE:我做了一个扩展,在许多事情中清除了我的历史和缓存。在manifest.json中,我有:

"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();

1 个答案:

答案 0 :(得分: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"
    }
  });
})