【发布时间】:2013-01-19 22:06:21
【问题描述】:
我已尝试浏览此处发布的类似问题,但似乎没有任何效果
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"]
}]
}
背景.html
<html>
<script>
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse){
alert(request);
//chrome.pageAction.show(sender.tab.id);
sendResponse('Found!');
}
)
</script>
</html>
内容脚本.js
chrome.extension.sendMessage({"name" : "hola"}, function(res){
console.log(res); })
但是我反复遇到同样的错误:
Port error: Could not establish connection. Receiving end does not exist.
有什么想法吗?
【问题讨论】:
-
这发生在您加载的每个页面上?
-
是的,我认为这无关紧要,我实际上允许任何页面调用此扩展程序 (://*/)
-
这很重要,因为伪协议(
chrome:、file:、view:...)不允许注入,它们可能会产生像你这样的错误。这就是我问它的原因。但是,@RocketDonkey 是对的。清单版本 2 不允许内联脚本。 -
@Ragnarokkr 提出了一个很好的观点(我记得被骗了) - 很多时候我只是刷新
chrome://extensions选项卡并检查我的更改是否有效。但是我注意到我会一直遇到这些端口错误(因为清单中只有http/https)。因此,我开始养成跳到另一个页面进行测试的习惯。