2017-01-02 45 views
2

我正在研究一个Chrome扩展,我想将一个内容脚本注入到一个url列表中。通常我会使用正常的语法:我可以使用外部数组来匹配用于内容脚本注入的URL吗?

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

但是对于匹配模式,我想从服务器拉数组。有没有办法以编程方式设置“匹配”数组(例如从background.js文件)?

+0

您可以创建一个数组,并使用AJAX来填充它。然后,在'matches'属性中使用该数组名称? –

+0

好的,我在哪里运行AJAX调用? –

+0

您能展示您拥有的全部功能吗?您可以在同一个JS文件中创建一个URL列表作为一个字符串数组并使用它。需要尝试一下。 –

回答

1

据我所知,你不能在扩展中修改你的manifest.json文件。你可以做的是通过编程的方式在你的内容脚本从后台页面注入,当标签的URL匹配你从服务器获得的一个URL。

请注意,您将需要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"}); 
     }); 
    } 
}); 
相关问题