这两种javascript用法的区别是什么?


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关闭背景页面的信号解决方案。作为一种替代方法,我可以提供打开一个端口到后台页面-然后可以监听该端口上的断开连接事件,该事件将在窗口关闭时触发。

相关内容

最新更新