是否有关于Chrome扩展程序弹出窗口关闭的事件?

ebi*_*ebi 18 google-chrome-extension

我已经尝试过window.unload,window.beforeunload等.一旦弹出窗口关闭,我正在寻找一种通知我的后台页面的方法.

方 觉*_*方 觉 18

你可以试试这个.使用chrome.runtime.connect(或chrome.extension.connect在Chrome 26之前)连接到您的后台页面,并port.onDisconnect在弹出窗口关闭时在后台页面中触发.

  • 仅供参考,此用例现在在清单 v3 中已损坏,因为端口将在一段时间后自动关闭,并且您会收到错误消息,表明您正在尝试连接已断开连接的端口对象。 (2认同)

gig*_*gnu 17

就这么简单:

// popup.js
chrome.runtime.connect({ name: "popup" });
Run Code Online (Sandbox Code Playgroud)
// background.js
chrome.runtime.onConnect.addListener(function(port) {
    if (port.name === "popup") {
        port.onDisconnect.addListener(function() {
           console.log("popup has been closed")
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

请注意,在某些边缘情况下此方法不起作用。例如,当打开弹出窗口然后使用键盘快捷键(例如 ctrl + t)切换选项卡时。


nxt*_*rld 5

可能是一种骇人听闻的方式,但是在弹出页面中您可以收听

  window.onblur = function(){}
Run Code Online (Sandbox Code Playgroud)

并向活动标签发送消息。