Ash*_*are 2 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" : {
"default_icon" : "icon.png"
},
"content_scripts" : [{
"matches" : ["*://*/*"],
"js" : ["contentscript.js"]
}]
}
Run Code Online (Sandbox Code Playgroud)
Background.html
<html>
<script>
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse){
alert(request);
//chrome.pageAction.show(sender.tab.id);
sendResponse('Found!');
}
)
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
Contentscript.js
chrome.extension.sendMessage({"name" : "hola"}, function(res){
console.log(res); })
Run Code Online (Sandbox Code Playgroud)
但是我反复得到同样的错误:
Port error: Could not establish connection. Receiving end does not exist.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
由于事情已经转变为manifest 2,实际上您不再允许使用内联脚本(例如您background.html在<script>上面标签中的内容.请参阅此处).我不确定你的用例,但在大多数情况下简单的情况(读:我做过的东西:)),你实际上不需要填充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"
}]
}
Run Code Online (Sandbox Code Playgroud)
请注意,我们在这里做两件事情-改变pages到scripts里面background,并指出它["background.js"],然后添加"run_at": "document_end"到结束content_scripts部分.如果遗漏,这肯定会导致问题(类似于您现在看到的问题) - 您现在告诉内容脚本在页面加载后运行.如果它立即运行,则存在后台页面未加载的风险,这意味着它尚未准备好接收消息并给出连接错误.下面是background.js与您<script>之前的代码之间的脚本相同的内容:
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse){
alert(request);
//chrome.pageAction.show(sender.tab.id);
sendResponse('Found!');
}
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9459 次 |
| 最近记录: |