关闭由 Google Chrome 扩展程序创建的弹出窗口

2024-03-07

我正在尝试创建一个 Chrome 扩展来替代 Delicious 书签。我知道已经有一个扩展可以做到这一点,但该扩展的问题是,在您为站点添加书签后,弹出窗口保持打开状态(与使用书签相反,在提交表单后弹出窗口会自行关闭。我重新创建了扩展并遇到了同样的问题。

这是我的代码:

清单.json:

{
  "name": "Delicious",
  "version": "1.0",
  "description": "Bookmark a site on Delicious",
  "background_page": "background.html",
  "permissions": [ 
    "tabs" 
  ],
  "browser_action": {
    "default_icon": "delicious.png"
  },
  "content_scripts": [
    {
      "matches": ["http://www.delicious.com/save*"],
      "js": ["contentscript.js"]
    }
  ]
}

背景.html:

<html><script>
chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.getSelected(null, function(tab) {
    w = window.open('http://delicious.com/save?url='+
          encodeURIComponent(tab.url)+
          '&title='+encodeURIComponent(tab.title)+
          '&v=5&noui=1&jump=close',
        'deliciousuiv5',
        'location=yes,links=no,scrollbars=no,toolbar=no,width=550,height=550');
  });
});
</script></html>

内容脚本.js:

if (document.URL == 'http://www.delicious.com/save')
{
  alert('closing...');
  self.close();
  alert('should have closed by now');
}

当我单击“美味”按钮时,弹出窗口显示正常,我可以保存书签,但单击“保存”后,弹出窗口不会关闭。两个警报都会出现,但是self.close()似乎什么也没做。当我删除 contentscript.js 中的 URL 检查时,弹出窗口会正常出现,第一个警报立即触发,然后弹出窗口会自行关闭(正如它应该的那样)。

为什么这不起作用? Chrome 似乎并没有阻止我执行 self.close()。美味在做什么吗?难道是别的什么?

如果您需要的话,这些文件就在这里:[链接已删除,因为 drop.io 停业了]


Try window.close(),但这可能也行不通。

当您创建常规窗口(而不是浏览器操作弹出窗口)时,您可以使用以下命令关闭它chrome.tabs.remove()从后台页面。您还可以从背景页面检测此窗口。就像是:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if(changeInfo.status == "loading") {
        if(tab.url == "http://www.delicious.com/save") {
            chrome.tabs.remove(tabId);
        }
    }
});

我不确定 Chrome 如何将创建的窗口视为选项卡或窗口。如果是 Windows 那么上面的代码会有点不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关闭由 Google Chrome 扩展程序创建的弹出窗口 的相关文章

随机推荐