我正在开发一个chrome扩展程序,我想在该扩展程序中将内容脚本注入(inject)到URL列表中。通常我会使用常规语法:
{
"name": "My extension",
...
"content_scripts": [
{
"matches": ["http://www.google.com/*"],
"css": ["mystyles.css"],
"js": ["jquery.js", "myscript.js"]
}
],
...
}
但是对于匹配模式,我想从服务器中提取数组。有没有办法以编程方式设置“matches”数组(例如,从background.js文件)?
最佳答案
据我所知,您无法从扩展名内修改manifest.json
文件。您可以做的是,当标签的URL与您从服务器获得的URL之一匹配时,以编程方式从后台页面注入(inject)内容脚本。
请注意,您将需要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"});
});
}
});