0
var win = window.open('cover.html','','height=50,width=150,titlebar=no,toolbar=no');
win.onbeforeunload = function(){ updateIcon();};

VS

chrome.windows.create(
  { 
    url: "cover.html", 
    type: "popup", 
    width: 150,
    height: 50 
  }, 
  function(win)
  { win.onbeforeunload = function(){ updateIcon();};  } 
 );

chrome api 版本中不调用函数 updateIcon()。我想知道为什么。这两段代码都在 ubuntu linux 上进行了测试。

4

1 回答 1

1

正如评论中有用解释:

chrome.windows.create返回不同类型的窗口:Chrome API Window 对象。它不会让您访问window已打开文档的对象。

如果您需要检测窗口何时从打开的一侧关闭,您可以监听chrome.windows.onRemoved事件并将窗口 ID 与您从中获得的 ID 进行比较create

如果您确定要挂钩到unload文档的事件,您可以从cover.html's 代码中执行此操作

您可以使用chrome.extensions.getViews- 但请注意您必须查询 atype : "tab"不是"popup"- 后者仅指Browser/Page Action popups,而不是在弹出式窗口中打开的常规页面。我知道这很混乱。

您提到自己找到了一种解决方案,可以使用runtime.getBackgroundPage. 作为一种替代方法,我可以提供打开一个到后台页面的端口 - 然后可以监听该端口上的断开连接事件,该事件将在窗口关闭时触发。

于 2016-11-18T12:18:26.447 回答