繁体   English   中英

Chrome扩展程序获取新选择的标签的网址

[英]Chrome extension get url of newly selected tab

我有一个扩展,每次使用chrome.tabs.onUpdated事件监听器更改网页时都会检测到。 此事件侦听器中的代码根据页面URL执行某些任务。 我还想在从一个选项卡切换到另一个选项卡时执行这些任务,但这并不会激活chrome.tabs.onUpdated事件侦听器,因此我会使用chrome.tabs.onActivated监听选项卡更改。

问题是使用chrome.tabs.onActivated没有给我我刚刚切换到的选项卡的URL,这是我需要的。 任何人都可以帮我吗?

谢谢

你有2个选择:


  1. 使用两个事件(不太好):

    除了 chrome.tabs.onUpdated ,你已经在使用您的其他功能(你上面的描述)事件,你也可以使用chrome.tabs.get方法来获取tabIdonActivated的事件对象,然后通过一个功能。 但是,在这种情况下,恕我直言选项2对你来说是更好的选择:

      chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){ //... whatever other stuff you were doing anyway }); chrome.tabs.onActivated.addListener(function(evt){ chrome.tabs.get(evt.tabId, function(tab){ alert(tab.url); //the URL you asked for in *THIS QUESTION* }); }); 
  2. 仅使用onUpdated事件一次(更好):

    在同一事件中,同时处理您的其他内容和您正在寻找的内容:

      chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){ //... whatever other stuff you were doing anyway chrome.tabs.getSelected(null, function(tab) { alert(tab.url); //the URL you asked for in *THIS QUESTION* }); }); 

当然,不要忘记:


你的manifest.json文件应该有“ tabs权限”:

  { "name": "My extension", ... "permissions": [ "tabs" ], ... } 

你有正确的想法使用chrome.tabs.onActivated。 当您获得onActivated的事件时,您还应该获取activeInfo对象,该对象应包含选项卡ID。 有了这个,你可以执行chrome.tabs.get(),传入该选项卡ID,传递给chrome.tabs.get()回调的选项卡对象应包含URL(但请注意,您需要“选项卡” “清单中的权限以获取URL”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM