dAn*_*jou 9 javascript google-chrome-extension
我有以下文件(gist易于访问):
的manifest.json
{
"name": "testmessage",
"version": "0.1",
"manifest_version": 2,
"externally_connectable": {
"matches": ["*://www.google.com/*"]
},
"background": {
"scripts": ["background.js"],
"persistent": true
},
"content_scripts": [
{
"matches": ["*://www.google.com/*"],
"js": ["content.js"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
content.js
chrome.runtime.sendMessage(
"eldkfaboijfanbdjdkohlfpoffdiehnb", // PUT YOUR EXTENSION ID HERE
"foo",
function (response) {
console.log(response);
}
);
console.log("this is content.js reporting for duty");
Run Code Online (Sandbox Code Playgroud)
background.js
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
console.log("background.js got a message")
console.log(request);
console.log(sender);
sendResponse("bar");
}
);
console.log("this is background.js reporting for duty");
Run Code Online (Sandbox Code Playgroud)
我可以在各自的控制台中看到"......报告职责"消息.但是background.js在http://www.google.com加载时没有收到消息.第5行content.js打印undefined在google.com的控制台中.
当我chrome.runtime.sendMessage("eldkfaboijfanbdjdkohlfpoffdiehnb", "foo");在google.com控制台中运行时,它会显示在background.js控制台中.
我究竟做错了什么?
Xan*_*Xan 23
你做错了什么让它过于复杂.两次.
首先,您不需要声明可外部连接,因为您从内容脚本而不是网页本身发送消息.
其次,它也不是外部信息.外部邮件用于连接不同的扩展,而不是一个扩展中的邮件.
您的代码应如下所示:
content.js
chrome.runtime.sendMessage(
"foo",
function (response) {
console.log(response);
}
);
Run Code Online (Sandbox Code Playgroud)
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("background.js got a message")
console.log(request);
console.log(sender);
sendResponse("bar");
}
);
Run Code Online (Sandbox Code Playgroud)