Javascript Google Chrome扩展的浏览器关闭事件?
我正在为谷歌浏览器开发一个扩展。我的后台脚本everytime在使用XMPP API的服务器上进行授权,并订阅PubSub节点。我需要在退出时取消订阅,否则虚拟订阅将保留在服务器上。Google Chrome扩展API中是否存在任何Javascript Google Chrome扩展的浏览器关闭事件?,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在为谷歌浏览器开发一个扩展。我的后台脚本everytime在使用XMPP API的服务器上进行授权,并订阅PubSub节点。我需要在退出时取消订阅,否则虚拟订阅将保留在服务器上。Google Chrome扩展API中是否存在任何onBrowserClose事件?Chrome扩展API中没有此类事件 但是,每次窗口关闭时都会触发chrome.windows.onRemoved事件。我想如果您关闭了最后一个窗口,您可以在这个事件中进行检查,但不幸的是,由于Chrome的异步特性,这不起作用 我尝
onBrowserClose
事件?Chrome扩展API中没有此类事件
但是,每次窗口关闭时都会触发chrome.windows.onRemoved
事件。我想如果您关闭了最后一个窗口,您可以在这个事件中进行检查,但不幸的是,由于Chrome的异步特性,这不起作用
我尝试的是在onRemoved
事件处理程序中运行一个简单的AJAX请求。AJAX请求从未到达服务器,因为Chrome在运行事件之前已经关闭了(或者只是忽略了它)
最后的答案是:不,据我所知,目前你不能。您可能希望在上启动以下错误报告,以便在更新时引起注意。添加浏览器关闭事件是一个非常频繁的请求。星更新。阅读错误报告,通过按键检测浏览器何时关闭。如果发现打开的选项卡数为0,则可以将其视为Chrome onClose事件。在我的例子中,我必须在Chrome关闭之前取消桌面通知,因为否则它会崩溃。 我就是这样做的: 1。使用以下命令初始化变量num_tabs:
chrome.tabs.getAllInWindow( null, function( tabs ){
console.log("Initial tab count: " + tabs.length);
num_tabs = tabs.length;
});
2。创建选项卡时增加选项卡数:
chrome.tabs.onCreated.addListener(function(tab){
num_tabs++;
console.log("Tab created event caught. Open tabs #: " + num_tabs);
});
3。删除选项卡时减少num_tabs,如果num_tabs=0,则在关闭事件处理程序时运行浏览器
chrome.tabs.onRemoved.addListener(function(tabId){
num_tabs--;
console.log("Tab removed event caught. Open tabs #: " + num_tabs);
if( num_tabs == 0 )
notification.cancel();
});
这个对我很有用:
chrome.windows.onRemoved.addListener(function(windowId){
alert("!! Exiting the Browser !!");
});
它使用
chrome.windows
而不是chrome.tabs
TL;DR:尝试窗口。onunload
事件,它适用于某些情况
正如前面提到的,我们通常无法处理类似于onBrowserClose
事件的事件并阻止浏览器关闭。但在某些情况下,我们可以使用window.onunload
事件来同步执行操作,如果它真的同步执行,,它确实可以工作
根据我的经验,您至少可以:
- 在HTML5
(同步的)中保存一些信息(例如日志)localStorage
- 调用一些异步chrome扩展API函数,但无法得到结果。(它对我有用!耶!)
- 执行synchronousXMLHTTPRequest(是的,有时它可以工作)