我正在构建一个chrome扩展,我需要在标签更改时从background.js向content.js发送消息,但每次都失败。
我在Chrome的扩展选项卡上看到以下错误-
以下是我的清单文件的外观-
{
"manifest_version": 3,
"version": "1.0",
"action": {
"default_popup": "popup.html",
"default_icon": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}
},
"background": {
"service_worker": "background.js"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
],
"permissions": [
"tabs"
],
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}
}
Background.js
chrome.tabs.onActivated.addListener((tabId, tab) => {
//Sends a message to the active tab
chrome.tabs.sendMessage(tabId, {
type: "NEW",
});
});
Content.js
chrome.runtime.onMessage.addListener((obj, sender, response) => {
const { type, value } = obj;
if (type === "initObserver") {
initObserver;
}
});
2条答案
按热度按时间p4tfgftt1#
不要向新选项卡或以chrome://开头的选项卡发送消息,因为无法注入内容脚本。
background.js
wztqucjr2#
1.调用错误意味着sendMessage的一个参数不正确,但它不会发生在问题中当前发布的代码中,因此显然这是一个旧错误。单击垃圾桶图标将其删除。
1.在重新加载或安装/更新扩展程序后,您需要将内容脚本显式注入到当前打开的标签页中,因为Chrome不会自动执行此操作,example。
1.会有一些标签无法运行内容脚本,例如其他扩展或chrome://页面以及通过全局runtime_blocked_hosts policy禁止您的扩展的网站。您可以抑制和忽略连接错误,这样它就不会污染日志: