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

Dom*_*azi 3 javascript google-chrome event-listener google-chrome-extension

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

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

谢谢

Fla*_*nno 7

你有2个选择:


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

    除了到chrome.tabs.onUpdated,你的事件 ALREADY使用您的其他功能(你上面的描述),你也可以使用chrome.tabs.get方法来获取tabId来自onActivated的事件对象,然后传递给一个函数.但是,在这种情况下,恕我直言选项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*
          }); 
        });
    
    Run Code Online (Sandbox Code Playgroud)
  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*
          });
        });
    
    Run Code Online (Sandbox Code Playgroud)

.

当然,不要忘记:


您的manifest.json文件应具有" 标签权限":

  {
    "name": "My extension",
    ...
    "permissions": [
      "tabs"
    ],
    ...
  }
Run Code Online (Sandbox Code Playgroud)