我已经阅读了谷歌关于“消息传递”的文档多次,并且可能查看了10多个其他具有相同问题的问题,并已经尝试过大多数“解决方案”以及下面的内容的各种变化...这是黑魔法,对吗?无论如何,下面是它。
清单文件:
我知道扩展程序不应该使用内联JS,但为了保留原始问题,我将其保留在此处。因为我仍然无法从后台页面发送消息,所以当我从弹出窗口切换到后台时,我从manifest.json中删除了适当的行。 popup.html 文件:
我收到一个未定义的警告... 我还尝试在弹出窗口上按下按钮后并在指定网址上执行此操作,但这是稍后要处理的问题。可以在此处找到有关按钮和窗口的其他文件,只是background.js内容被包装在addEventListener ("click"...中: http://pastebin.com/KhqxLx5y 和 http://pastebin.com/JaGcp6tj
清单文件:
{
"manifest_version" : 2,
"name" : "Message Test",
"version" : "1.0",
"browser_action": {
"default_popup": "popup.html"
},
"background": {
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches" : ["<all_urls>"],
"js": ["message-test.js"]
}
]
}
我知道扩展程序不应该使用内联JS,但为了保留原始问题,我将其保留在此处。因为我仍然无法从后台页面发送消息,所以当我从弹出窗口切换到后台时,我从manifest.json中删除了适当的行。 popup.html 文件:
<html>
<head>
<script>
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello", theMessage: "Why isn\'t this working?"}, function(response) {
console.log(response.farewell);
});
});
</script>
</head>
<body>
</body>
</html>
OR
background.js文件:
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello", theMessage: "Why isn\'t this working?"}, function(response) {
console.log(response.farewell);
});
});
message-test.js文件:
var Mymessage;
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
if (message.greeting == "hello"){
Mymessage = message.theMessage;
alert(Mymessage);
}
else{
sendResponse({});
}
});
我收到一个未定义的警告... 我还尝试在弹出窗口上按下按钮后并在指定网址上执行此操作,但这是稍后要处理的问题。可以在此处找到有关按钮和窗口的其他文件,只是background.js内容被包装在addEventListener ("click"...中: http://pastebin.com/KhqxLx5y 和 http://pastebin.com/JaGcp6tj