检测Chrome浏览器退出?

时间:2013-02-18 01:08:45

标签: google-chrome-extension

我尝试了一切,但似乎没有什么对我有用。我试图通过检测窗口关闭来检测关闭浏览,如下面的代码,但这对我不起作用。我做错了什么,还有另一个检测Chrome关闭的解决方案吗?

chrome.windows.onRemoved.addListener(function(windowId){
  alert("Browser exit!");
});

3 个答案:

答案 0 :(得分:2)

你的一般问题是退出浏览器意味着浏览器无法再运行你的脚本来检查它是否已经退出 - 这就像试图询问一个人是否已经死了:答案(如果你得到的话)只会永远是“不”。

您可能尝试的一个解决方案是使用background permission

的长时间运行的背景页面
  

让Chrome尽早启动并延迟关闭,以便应用和扩展程序可以延长使用寿命。

     

如果任何已安装的托管应用,打包应用或扩展程序具有“后台”权限,则只要用户登录其计算机,Chrome就会立即运行(无形) - 在用户启动Chrome之前。 “后台”权限还允许Chrome继续运行(即使在最后一个窗口关闭后),直到用户明确退出Chrome。

此权限允许Chrome在所有浏览器窗口关闭后继续运行您的扩展程序。通常情况下,Chrome只能在打开窗口时执行操作,因此我们遇到Chrome无法检测所有窗口何时关闭的问题(如上所述)。凭借后台权限,即使所有窗口都已关闭,Chrome仍可以运行扩展程序代码。

答案 1 :(得分:0)

我只想在我的扩展程序退出整个浏览器时获得控制权;我的扩展程序专门使用一个文本框,所以我将其onblur属性设置为一个函数并将我的退出代码放在那里;可能不是你想要的,但它对我有用!

Chrome开发者网站建议不要使用背景页面,因为“他们消耗的内存和其他资源”;

我同意以更一致的方式来控制扩展退出是有用的;它是一个html页面,否则似乎与dom集成;

答案 2 :(得分:0)

chrome没有提供任何API来检测Chrome浏览器是否正在关闭。但是,我们可以在使用chrome扩展时检测背景页面中的chrome浏览器打开事件。

background.js

    chrome.runtime.onStartup.addListener(function () {
        console.log("extension started: " + Date.now());
    });

Chrome浏览器启动时会触发此事件。接下来,您可以使用任何技巧来识别Chrome浏览器是否退出。