我一直在努力寻找一个更好的选择,但我似乎找不到更好的方法来做到这一点。
我现在的Chrome扩展清单有大约300行代码,其中包括这些URL。
"http://www.google.com/webhp*", "https://www.google.com/webhp*",
"http://www.google.ad/webhp*", "https://www.google.ad/webhp*",
"http://www.google.ae/webhp*", "https://www.google.ae/webhp*",
"http://www.google.com.af/webhp*", "https://www.google.com.af/webhp*",
"http://www.google.com.ag/webhp*", "https://www.google.com.ag/webhp*",
"http://www.google.com.ai/webhp*", "https://www.google.com.ai/webhp*",
"http://www.google.am/webhp*", "https://www.google.am/webhp*",
"http://www.google.co.ao/webhp*", "https://www.google.co.ao/webhp*",
"http://www.google.com.ar/webhp*", "https://www.google.com.ar/webhp*",
"http://www.google.as/webhp*", "https://www.google.as/webhp*",
"http://www.google.at/webhp*", "https://www.google.at/webhp*",我需要匹配运行我的脚本的https://www.google.com/ (确切地),https://www.google.com/webph* (替代谷歌主页)和https://www.google.com/search* (以匹配我想要的搜索选项卡:图片,视频,购物等等)。
主要问题在于我不能使用通配符作为域扩展(..com/..de/.org)。
一定有更好的方法对吧?我现在的名单看上去像是一场灾难。
发布于 2019-01-07 22:37:20
我认为您总是需要在某个地方有您的URL规范,但是有一个选项可以通过将它移动到JavaScript中以更广泛的方式进行匹配,如果您愿意的话,这将使您可以将它从清单中移开。
在清单中,只需声明扩展以在所有URL上注入后台脚本:
"content_scripts": [{
"matches": ["http://*/*", "https://*/*"]
}]然后在后台脚本中定义扩展应该在哪里工作,例如:
var match = 'www.google.';
var excludes = ['maps', 'whatever'];
chrome.tabs.onUpdated.addListener(function(id, info, tab) {
if (tab.status !== "complete"){
return;
}
if(tab.url.indexOf(match) !== -1 && excludes.indexOf(tab.url) === -1){
// inject your script
chrome.tabs.executeScript(tab.id, {"file": "myScript.js"});
}
}https://stackoverflow.com/questions/54066435
复制相似问题