Chrome扩展程序 - 在网址更新时加载内容脚本

时间:2016-03-26 01:13:07

标签: javascript google-chrome

我遇到此问题,我想在网址匹配content.js的网页上运行内容脚本https://www.example.com/*。我在manifest.json中定义了以下内容:

{ 
  ...

  "content_scripts": [
    {
      "matches": ["https://www.example.com/*"],
      "js": ["content.js"]
    }
  ],

  ...
}

但是,当用户从另一个网页(例如content.js)导航到https://www.foo.bar时,系统不会加载https://www.example.com/*,例如通过点击超链接。它仅在用户直接访问https://www.example.com/*时加载。

我正在考虑将content.js注入所有网页,并在后台监听chrome.tabs.onUpdate以查看当前网址是否与https://www.example.com/*匹配,并根据向{{1}发送消息1}}。有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以从后台页面以编程方式注入脚本,使您可以在何处发送/接收消息executeScript的回调函数:

function processUrl(tabId, url) {
  if(url.indexOf("https://www.example.com")>-1){
    chrome.tabs.executeScript(tabId, {file:"content.js"}, function() {
      //send and receive msgs  here
    };
  }
}

然后从你的听众那里调用这个函数。如果要使用库或其他依赖项,请首先使用库调用executeScript,并在第一次调用的回调中使用脚本执行executeScript。