这个问题对我的扩展有所帮助,认识到新页面和在同一页面上加载内容之间的区别,所以我想分享我的解决方案。首先你需要在 background.js 中调用onUpdated:
清单
{
"name": "My test extension",
"version": "1",
"manifest_version": 2,
"background": {
"scripts":["background.js"]
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["contentscript.js"]
}
],
"permissions": [
"tabs"
]
}
background.js
chrome.tabs.onUpdated.addListener(
function(tabId, changeInfo, tab) {
// read changeInfo data
if (changeInfo.url) {
// url has changed; do something here
}
}
);
然后您可以扩展该脚本以将消息数据从 background.js 发送到您的内容脚本(使用 chrome.runtime.sendMessage):
background.js(续)
chrome.tabs.onUpdated.addListener(
function(tabId, changeInfo, tab) {
// read changeInfo data
if (changeInfo.url) {
// url has changed; do something here
// like send message to content script
chrome.tabs.sendMessage( tabId, {
message: 'hello!',
url: changeInfo.url
})
}
}
);
最后在要使用的扩展内容脚本中监听该数据:
contentscript.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
// listen for messages sent from background.js
if (request.message === 'hello!') {
console.log(request.url) // new url is now in content scripts!
}
});
您可以从background.js 传递您想要的任何数据。希望对某人有所帮助! \ (•◡•) /