如何在选项卡更改时从内容脚本启动消息请求?

时间:2014-11-11 14:54:49

标签: javascript google-chrome google-chrome-extension

我的扩展程序需要密切关注浏览器[chrome]中非常活跃的标签页的URL。目前,我已经能够跟踪用户从开始加载/重新加载的URL。但是如果有更改标签,则内容脚本不会向后台脚本发送消息并返回任何内容。

实际上我想在用户的标签更改上重新加载content.js脚本。

这是我迄今为止所做的事情:

CONTENT.JS:

// Code here....

chrome.extension.sendMessage({ wants: 'URL' }, function(res) {
var urlResponse = res.url;
});

// Code here....

效果很好,但是这个content.js并没有触发标签更改。相反,它会在同一个标​​签中更改文档时触发(如访问新链接等)

BACKGROUND.JS:

chrome.extension.onMessage.addListener(
    function(script, sender, sendResponse) {
        if (script.wants == 'URL') {
            sendResponse({ maskedURL: sender.tab.url });
        }
    }
);

的manifest.json:

{
  "manifest_version": 2,

  "name": "NAME HERE",
  "description": "DESC HERE",
  "version": "1.1",
  "options_page": "options.html",

  "browser_action": {
        "default_title": "NAME",
        "default_icon": "icon.png",
        "default_popup": "popup.html"
  },
  "icons": { "16": "icon.png",
           "48": "icon.png",
          "128": "icon.png" },
  "permissions": [
        "storage",
        "<all_urls>",
        "tabs"
  ],
  "content_scripts": [
    {
      "matches": ["http://*/*","https://*/*"],
      "js": ["content.js"]
    }
  ],
  "web_accessible_resources": [
      "bg.png",
      "*.woff",
      "*.woff2"
  ],
  "background": {
    "scripts": ["background.js"]
  }
}

谢谢!

编辑:Xan请看看:

enter image description here

1 个答案:

答案 0 :(得分:1)

无法正确理解您的问题,但我会尽力澄清。

打开新页面或刷新现有页面时,

content.js运行一次。无法访问当前活动选项卡的详细信息。

如果您想了解标签的任何详细信息,请使用chrome.tabs

中的background.js API
chrome.tabs.onActivated.addListener(activeInfo){ //Fired when an active tab is changed
    chrome.tabs.query({'active':true,'currentWindow':true},function(array_of_tabs){//Gives details of the active tab in the current window.
        alert(array_of_tabs[0].url);
});