如何检测离开带有Chrome扩展名的域名

时间:2016-05-30 14:57:56

标签: google-chrome-extension

在Chrome扩展程序中,我想在用户导航远离时运行一些代码,或者使用某个域的网址关闭标签页(例如" google.com&# 34)。

我已尝试过webNavigation,但当Chrome浏览器呈现页面时,它也会触发。另一方面,就我所见,onUpdated没有提供以前的URL。 onBeforeUnload不会显示导航到的下一个URL。

我想我可以混合使用这些,但我希望有一个更简单的解决方案。 有谁知道这是怎么做到的吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

我只是提供一个广泛的方法来解决我的问题,但如果需要,可以详细介绍。

我会:

  1. 在您的域名模式中使用content script matches(这样您就可以在您的域中获得更广泛的网址选择)。

  2. 正如您所提到的那样使用onUpdated,但在您的内容脚本中。这样,它只会在您处于正确的域中时检查onUpdated ...内容脚本中的tabs API不可用,如Xan用户所评论的那样。相反,您可以将javascript注入匹配的网页并查看基于javascript的解决方案,或使用message passing到后台页面(可以访问chrome.tabs)以表示存在匹配。

  3. 进一步了解chrome.tabs,您可以查看onUpdatedonSelectionChangedonRemoved,了解选项卡何时离开或关闭,以及更多活动here

答案 1 :(得分:0)

我没有测试它,但我相信这样的东西可以起作用:

//check if the tab that was just closed had a certain url
chrome.tabs.onRemoved.addListener(function(tabId, removeInfo) {
   chrome.tabs.get(tabId, function(tab) {
      if (tab.url.indexOf("google.com") >= 0) {
         //do stuff
      }
   });
});

检查用户何时导航。你可以跟踪每个标签的url是什么并对其采取行动,或者在每个页面上注入一个内容脚本,这样就可以做到这样的事情:

   if (document.referrer.indexOf("google.com") >= 0) {
      //do stuff
   }