我正在开发Google Chrome的扩展程序。我的后台脚本每次都在使用XMPP API的服务器上进行授权,并订阅PubSub节点。我需要在退出时取消订阅,否则虚拟订阅将保留在服务器上。 Google Chrome扩展程序API中是否有任何onBrowserClose
事件?针对Google Chrome扩展程序的事件onBrowser关闭?
回答
Chrome扩展API中没有这样的事件。
但是,每当窗口关闭时都会触发chrome.windows.onRemoved
事件。我想你可以检查这个事件,如果你关闭了最后一个窗口,但不幸的是,由于Chrome的异步性质,这是行不通的。
我试过的是在onRemoved
事件处理程序中运行一个简单的AJAX请求。 AJAX请求从未到达服务器,因为Chrome在运行事件之前已经关闭(或者只是忽略它)。
做出最终答案为:不,目前您不能,据我所知。您可能想要在http://crbug.com/30885上发布以下错误报告以获得关于更新的注意事项。
感谢您的回应,事实上我决定以旧派的方式,只需保存localstorage中的以前的订阅信息,并在后台脚本重新加载时取消订阅=) – simple 2010-08-02 19:58:45
添加浏览器关闭事件是一个相当频繁的请求。明星http://crbug.com/30885的更新。并阅读错误报告,以便通过按键检测浏览器何时关机。
如果您在打开的选项卡数为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.递增NUM_TABS创建选项卡时:
chrome.tabs.onCreated.addListener(function(tab){
num_tabs++;
console.log("Tab created event caught. Open tabs #: " + num_tabs);
});
3.递减num_tabs当一个标签被删除,并运行你的浏览器closeclose事件处理程序如果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的异步性质,因为codingbug的答案说? – 2011-12-10 22:52:46
如果你的浏览器有一个扩展名,它具有“背景”权限,请参阅这个 - > https://developer.chrome.com/extensions/declare_permissions,即使你认为它已经存在,chrome也不会退出。你必须明确地终止这个过程,或者强迫退出等等。 – ankitG 2016-04-13 09:15:22
这一次为我的作品:
chrome.windows.onRemoved.addListener(function(windowId){
alert("!! Exiting the Browser !!");
});
这需要chrome.windows
而非chrome.tabs
。
您可以拥有多个Chrome窗口,每次关闭某个窗口时都会触发此窗口,而不仅仅是最后一个窗口关闭。 – s3m3n 2013-11-06 16:54:39
TL; DR:尝试window.onunload
事件,它适用于某些情况。
正如之前提到的,我们通常无法处理类似onBrowserClose
事件并阻止浏览器关闭。但是在某些情况下,我们可以使用window.onunload
事件同步,并且如果它确实同步,它也可以使用。
从我的经验,你至少可以:
- 保存在(例如日志)的HTML5
localStorage
(这是同步)的一些信息。 - 调用一些异步铬扩展API函数,但不能得到结果。 (它适用于我!!)
- 执行同步 XMLHTTPRequest(是的,有时它的工作原理)。
- 1. 关闭Chrome扩展程序
- 2. 针对Facebook的Chrome扩展程序
- 3. Chrome扩展程序:强制popup.html关闭
- 4. Google Chrome扩展程序创建的关闭弹出窗口
- 5. Chrome扩展:Chrome关闭
- 6. 将Google Chrome扩展程序“关闭”和“打开”?
- 7. Chrome扩展程序和history.onVisited事件
- 8. Google Chrome扩展中的Fire Keydown事件
- 9. Silverlight播放器的视频事件 - Google Chrome扩展程序(JavaScript)
- 10. 登录Google Chrome扩展程序的AJAX事件
- 11. Chrome扩展程序 - onclick图标事件
- 12. 关闭Chrome扩展选项
- 13. 关于Chrome扩展程序的问题
- 14. 带有OAuth的Google Chrome扩展程序
- 15. Google Chrome扩展程序中的Flex
- 16. Chrome扩展事件
- 17. Chrome扩展程序弹出窗口关闭时是否有事件?
- 18. 使用JavaScript关闭Chrome扩展程序通知
- 19. Google Chrome扩展程序Http请求
- 20. Google Chrome扩展程序Hello World
- 21. Google Chrome扩展程序跨域XMLHttpRequest
- 22. Google Chrome扩展程序save data localy
- 23. 从Google Chrome扩展程序管理Cookie
- 24. Google Chrome浏览器扩展程序javascript
- 25. Chrome扩展程序 - 扩展程序加载的JavaScript文件
- 26. Chrome扩展程序androidpublisher packageName
- 27. Chrome扩展程序
- 28. Chrome扩展程序
- 29. Chrome扩展程序:检测弹出窗口关闭
- 30. Chrome扩展中的关闭选项卡
请记住,浏览器还有其他方式可以退出,包括关机和崩溃。即使有100%可靠的方法来检查浏览器正常退出,您仍然有漏洞。 – 2012-09-20 06:59:50