我正在编写优惠券样式的chrome扩展程序,我希望它只能在特定网站(超过300个网站)上运行。我读过有关在content_scripts中指定站点url的信息,但这似乎不切实际,特别是如果我需要更新它的话。这是我的脚本:
Manifest.json
{
"name": "Example",
"description": "description",
"version": "1.0",
"manifest_version": 2,
"background":
{
"scripts": ["js/background.js", "js/eventPage.js", "js/jquery-
3.2.1.min.js"],
"persistent":false
},
"page_action": {
"default_icon":"img/32icon.png"
},
"content_scripts": [
{
"matches": ["https://*/*"],
"js": ["js/sites_cs.js", "js/jquery-3.2.1.min.js"]
}
],
"permissions": [
"tabs",
"http://*/*",
"https://*/*",
"activeTab"
]
}
答案 0 :(得分:1)
您可以拥有一个包含您要匹配的URL的数组,并以编程方式将内容脚本仅注入匹配的网页。例如,删除content_scripts
文件的manifest.json
条目,并将此代码包括在后台脚本中:
background.js
// myURLs contains the websites where you want your content script to run
const myURLs = ['www.example1.com','www.anotherone.com','www.athird.one'];
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
if (changeInfo.status == 'complete' && myURLS.some(url => tab.url.includes(url))) {
chrome.tabs.executeScript(tabId,{file:'js/jquery-3.2.1.min.js'},()=>{
chrome.tabs.executeScript(tabId,{file:'js/sites_cs.js'});
});
}
});
通过这种方式,您只需要使用所需的URL更新变量myURLs
,您的内容脚本将仅在这些站点上注入。