var win = window.open('cover.html','','height=50,width=150,titlebar=no,toolbar=no');
win.onbeforeunload = function(){ updateIcon();};
和
chrome.windows.create(
{
url: "cover.html",
type: "popup",
width: 150,
height: 50
},
function(win)
{ win.onbeforeunload = function(){ updateIcon();}; }
);
在chrome api版本中没有调用updateIcon()函数。我想知道为什么。这两段代码都在ubuntu linux上进行了测试
正如在评论中解释的那样:
chrome.windows.create
返回一个不同类型的窗口:Chrome API窗口对象。它不允许您访问打开的文档的window
对象。
如果您需要从打开侧检测窗口何时关闭,您可以收听chrome.windows.onRemoved
事件并将窗口ID与从create
获得的窗口ID进行比较。
如果您决定挂钩到文档的unload
事件,您可以从cover.html
的代码
您可以使用chrome.extensions.getViews
-但请注意,您必须查询type : "tab"
和而不是"popup"
-后者仅指浏览器/页面操作弹出窗口,而不是在弹出式窗口中打开的常规页面。我知道这很令人困惑。
您提到自己找到了使用runtime.getBackgroundPage
关闭背景页面的信号解决方案。作为一种替代方法,我可以提供打开一个端口到后台页面-然后可以监听该端口上的断开连接事件,该事件将在窗口关闭时触发。