我已经尝试过window.unload,window.beforeunload等。 我正在寻找一种方法来在弹出窗口关闭后通知我的后台页面。
答案 0 :(得分:16)
你可以试试这个。使用chrome.runtime.connect(或Chrome {26}之前的chrome.extension.connect
)连接到您的背景页面,当弹出窗口关闭时,port.onDisconnect
会在您的后台页面中触发。
答案 1 :(得分:4)
可能是一种hacky方式,但在弹出页面中你可以听
window.onblur = function(){}
并向活动标签发送消息。
答案 2 :(得分:3)
就这么简单:
// popup.js
chrome.runtime.connect({ name: "popup" });
// background.js
chrome.runtime.onConnect.addListener(function(port) {
if (port.name === "popup") {
port.onDisconnect.addListener(function() {
console.log("popup has been closed")
});
}
});
请注意,此方法在某些边缘情况下不起作用。例如。当打开弹出窗口然后使用键盘快捷键(例如 ctrl + t)切换选项卡时。p>
答案 3 :(得分:2)
目前无法确定浏览器操作弹出窗口的时间
弹出窗口结束后立即触发关闭window.unonload
装货,而不是在它关闭时。这有一个错误crbug.com/31262。
可用的三种解决方法是well described here。它们包括port.onDisconnect
技巧,并定期从弹出窗口或后台页面汇集chrome.extension.getViews()
。
答案 4 :(得分:0)
终于找到了解决方案。将以下代码放在background.js
/ eventPage.js
:
chrome.windows.onFocusChanged.addListener(function(window) {
//handle close event
});