如何在 Chrome 分机中匹配同一个域名的多个分机?
How to match the same domain with multiple extensions in Chrome extension?
所以,我正在开发一个 Chrome 扩展程序,需要在域为 example.extension
的任何站点上激活,其中 extension
可以是任何内容(.com
, .de
等)。
我有一个内容脚本,在 manifest.json
我包含了一个接一个列出的所有域名:
"content_scripts": [{
"js": ["content.js"],
"matches": ["https://www.example.com/*","https://www.example.de/*"]
}]
但是我怎么能写出匹配 example.*
的东西而不是列举所有的东西呢?
请注意,我尝试过类似的方法但它不起作用:
"content_scripts": [{
"js": ["content.js"],
"matches": ["https://www.example*"]
}]
您可以使用持久后台脚本并在 url 符合您的要求时注入脚本。例如:
background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.status == 'complete' && tab.url.indexOf('https://www.example.') == 0){
chrome.tabs.executeScript(tabId,{file:'content.js'});
}
});
有 2 个选项:
第一个选项:
您使用清单中的 include_globs
,如图 here
"content_scripts": [{
"js": ["content.js"],
"matches": [ "*://*/*" ],
"include_globs": [
"*://*.example.*/*",
]
}]
第二个选项:您可以更改内容脚本以检查目标 URL
是否匹配 www.example.*
:
if (window.location.host.startsWith('www.example')){
//content script code
}
所以,我正在开发一个 Chrome 扩展程序,需要在域为 example.extension
的任何站点上激活,其中 extension
可以是任何内容(.com
, .de
等)。
我有一个内容脚本,在 manifest.json
我包含了一个接一个列出的所有域名:
"content_scripts": [{
"js": ["content.js"],
"matches": ["https://www.example.com/*","https://www.example.de/*"]
}]
但是我怎么能写出匹配 example.*
的东西而不是列举所有的东西呢?
请注意,我尝试过类似的方法但它不起作用:
"content_scripts": [{
"js": ["content.js"],
"matches": ["https://www.example*"]
}]
您可以使用持久后台脚本并在 url 符合您的要求时注入脚本。例如:
background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.status == 'complete' && tab.url.indexOf('https://www.example.') == 0){
chrome.tabs.executeScript(tabId,{file:'content.js'});
}
});
有 2 个选项:
第一个选项:
您使用清单中的 include_globs
,如图 here
"content_scripts": [{
"js": ["content.js"],
"matches": [ "*://*/*" ],
"include_globs": [
"*://*.example.*/*",
]
}]
第二个选项:您可以更改内容脚本以检查目标 URL
是否匹配 www.example.*
:
if (window.location.host.startsWith('www.example')){
//content script code
}