我可以使用外部数组来匹配用于内容脚本注入的 URL 吗?

Can I use an external array to match URLs for content script injection?

我正在开发 chrome 扩展程序,我想在其中将内容脚本注入到 URL 列表中。通常我会使用常规语法:

{
  "name": "My extension",
  ...
  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "css": ["mystyles.css"],
      "js": ["jquery.js", "myscript.js"]
    }
  ],
  ...
}

但是对于匹配模式,我想从服务器中提取数组。有没有办法以编程方式设置 "matches" 数组(例如来自 background.js 文件)?

据我所知,您无法从扩展中修改 manifest.json 文件。当Tab的URL与您从服务器中获得的URL S匹配之一时,您可以做的是从背景页面上编程注入您的内容脚本。

请注意,您需要 tabs<all_urls> 权限。

background.js

var list_of_URLs; //you populate this array using AJAX, for instance.

populate_list_of_URLs();

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
    if (list_of_URLs.indexOf(tab.url) != -1){
        chrome.tabs.executeScript(tabId,{file:"jquery.js"},function(){
            chrome.tabs.executeScript(tabId,{file:"myscript.js"});
        });
    }
});