Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension Chrome扩展端口错误:无法建立连接。接收端不存在_Google Chrome Extension - Fatal编程技术网

Google chrome extension Chrome扩展端口错误:无法建立连接。接收端不存在

Google 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.json

{
    "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一点也不担心——我记得那个开关为我把各种各样的扳手扔到齿轮上:)祝一切顺利。