我遇到此问题,我想在网址匹配content.js
的网页上运行内容脚本https://www.example.com/*
。我在manifest.json
中定义了以下内容:
{
...
"content_scripts": [
{
"matches": ["https://www.example.com/*"],
"js": ["content.js"]
}
],
...
}
但是,当用户从另一个网页(例如content.js
)导航到https://www.foo.bar
时,系统不会加载https://www.example.com/*
,例如通过点击超链接。它仅在用户直接访问https://www.example.com/*
时加载。
我正在考虑将content.js
注入所有网页,并在后台监听chrome.tabs.onUpdate
以查看当前网址是否与https://www.example.com/*
匹配,并根据向{{1}发送消息1}}。有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
您可以从后台页面以编程方式注入脚本,使您可以在何处发送/接收消息executeScript的回调函数:
function processUrl(tabId, url) {
if(url.indexOf("https://www.example.com")>-1){
chrome.tabs.executeScript(tabId, {file:"content.js"}, function() {
//send and receive msgs here
};
}
}
然后从你的听众那里调用这个函数。如果要使用库或其他依赖项,请首先使用库调用executeScript,并在第一次调用的回调中使用脚本执行executeScript。