Google chrome extension Chrome扩展端口错误:无法建立连接。接收端不存在
我试着浏览一下这里发布的类似问题,但似乎都不管用 Manifest.jsonGoogle chrome extension Chrome扩展端口错误:无法建立连接。接收端不存在,google-chrome-extension,Google Chrome Extension,我试着浏览一下这里发布的类似问题,但似乎都不管用 Manifest.json { "manifest_version": 2, "name" : "A simple Found Text Demo", "description" : "Bla", "version" : "1.0", "background" : { "pages" : "background.html" }, "page_action" : {
{
"manifest_version": 2,
"name" : "A simple Found Text Demo",
"description" : "Bla",
"version" : "1.0",
"background" : {
"pages" : "background.html"
},
"page_action" : {
"default_icon" : "icon.png"
},
"content_scripts" : [{
"matches" : ["*://*/*"],
"js" : ["contentscript.js"]
}]
}
Background.html
chrome.extension.onMessage.addListener(
功能(请求、发送方、发送响应){
警报(请求);
//chrome.pageAction.show(sender.tab.id);
sendResponse('Found!');
}
)
Contentscript.js
chrome.extension.sendMessage({“name”:“hola”},函数(res){
console.log(res);})
但是,我反复遇到同样的错误:
Port error: Could not establish connection. Receiving end does not exist.
有什么想法吗?自从事情变为
清单2
,你实际上不再被允许使用内嵌脚本(比如你在背景.html
中的
标记。请参阅)。我不确定您的用例,但在大多数简单的情况下(阅读:我所做的工作:),您实际上不需要用任何东西填充background.html
。相反,您可以直接传入一个background.js
文件,该文件将包含与上面相同的脚本。因此,您可以尝试将manifest.json
更改为:
{
"manifest_version": 2,
"name" : "A simple Found Text Demo",
"description" : "Bla",
"version" : "1.0",
"background" : {
"scripts" : ["background.js"]
},
"page_action" : {
"default_icon" : "icon.png"
},
"content_scripts" : [{
"matches" : ["*://*/*"],
"js" : ["contentscript.js"],
"run_at": "document_end"
}]
}
注意,我们在这里做了两件事-将页面更改为脚本在背景中,并将其指向[“background.js”]
,然后在内容脚本
部分的末尾添加了“run\u at”:“document\u end”
。如果忽略这一点,肯定会导致问题(与您现在看到的问题类似)-您现在告诉内容脚本在页面加载后运行。如果它立即运行,您将面临后台页面未加载的风险,这意味着它尚未准备好接收消息,并导致连接错误。下面是background.js
,它与您之前的
标记之间的脚本相同:
chrome.extension.onMessage.addListener(
功能(请求、发送方、发送响应){
警报(请求);
//chrome.pageAction.show(sender.tab.id);
sendResponse('Found!');
}
)
这发生在您加载的每个页面上?是的,我认为这不重要,我实际上允许任何页面调用此扩展(://*),这很重要,因为伪协议(chrome:
,文件:
,视图:
…)不允许注入,它们可能会生成类似您的错误。这就是我问这个问题的原因。然而,@RocketDonkey是对的。清单版本2不允许内联脚本。@Ragnarokkr提出了一个很好的观点(我记得曾经被欺骗过)——很多时候我只是刷新chrome://extensions
选项卡并检查我的更改是否有效。然而,我注意到我总是会遇到这些端口错误(因为清单中只有http
/https
)。因此,我开始养成跳转到另一页去测试的习惯。@AshwiniKhare一点也不担心——我记得那个开关为我把各种各样的扳手扔到齿轮上:)祝一切顺利。