Google chrome extension 如何检测使用chrome扩展离开域

Google chrome extension 如何检测使用chrome扩展离开域,google-chrome-extension,Google Chrome Extension,在Chrome扩展上,我想在用户从某个域的URL(例如“google.com”)导航到之外时运行一些代码 我试过了,但是当一个页面被Chrome预渲染时,它也会触发。另一方面,据我所知,它没有提供以前的URL。onBeforeUnload不会显示导航到的下一个URL 我想我可以混合使用这些,但我希望有一个更简单的解决方案。 有人知道怎么做吗?提前感谢。我没有测试它,但我相信类似的方法可以奏效: //check if the tab that was just closed had a certa

在Chrome扩展上,我想在用户从某个域的URL(例如“google.com”)导航到之外时运行一些代码

我试过了,但是当一个页面被Chrome预渲染时,它也会触发。另一方面,据我所知,它没有提供以前的URL。onBeforeUnload不会显示导航到的下一个URL

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

我没有测试它,但我相信类似的方法可以奏效:

//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
   }

我会给出一个大致的方法来说明我是如何做的,但是如果你需要的话,可以更详细地介绍

我想:

  • 使用基于域模式的URL(这样您可以在域中获得更广泛的URL选择)

  • 如前所述,在内容脚本中使用更新的
    on
    。这样,当您在正确的域中时,它将只检查
    onUpdated
    。。。正如用户Xan所评论的那样,
    选项卡
    API在内容脚本中不可用。相反,您可以将javascript注入匹配的网页并查看基于javascript的解决方案,或者使用背景页面(该页面可以访问
    chrome.tabs
    )来表示存在匹配项

  • 进一步使用
    chrome.tabs
    ,您可以查看、以及当选项卡被导航离开或关闭时,以及更多事件


  • 选项卡
    未更新的
    在内容脚本中不可用<代码>选项卡API仅适用于扩展页。谢谢Noam。我已经完成了第1步和第2步,第3步看起来很棘手,特别是因为预渲染。选项卡ID有时会在“我的脚下”发生变化,似乎我必须维护一个数据结构来遵循ID。我想知道是否有一个更简单的解决方案。np,为什么要跟踪选项卡的ID?我看到选项卡ID有时会发生变化。我将其归因于预渲染机制,然后,AFAIU用现有选项卡替代预渲染选项卡。@RoName此解决方案的目标是,如果成功,将消除跟踪选项卡的需要。相反,您可以运行一些代码,只在与所需url模式匹配的选项卡上侦听更新或其他事件,但第一个代码片段仅在选项卡关闭时才起作用,而不是导航离开。第二种方法只有在原始页面不是HTTPS时才有效,在我的例子中是..:(@ronme you提到,当您关闭选项卡时,它也会触发。不过,我不确定我是否理解第二个代码段的问题。它应该独立于协议工作。该代码段肯定可以关闭选项卡,但对我来说,更难的部分是捕获从域中导航的信息,因此该代码段只解决了更简单的问题问题的一部分。至于推荐人-请看。你有没有在这一个@ronme的底部?