Chrome Message passing. Uncaught Error: Error connecting to extension
Chrome Message passing. Uncaught Error: Error connecting to extension
所以我对 Chrome 的消息传递非常陌生,我正在尝试使用它在修改页面的 DOM 时提醒我的后台页面 (使用一些注入的 js)。
我只是想进行单向通信,但如果我在分机号为 运行 时在选项卡上打开控制台,它会告诉我 "Uncaught Error: Error connecting to extension [my extension id]."
为简单起见,我会说我的背景页面 background.js 具有以下代码行:
chrome.runtime.onMessage.addListener(
function(){
if (modified == "true") {
alert("modified message recieved");
fourth();
}
}
);
我的内容脚本是:
function subtreeModified(){
chrome.runtime.sendMessage({modified: "true"});
alert("modified message sent");
}
document.addEventListener("DOMSubtreeModified", subtreeModified, false);
我一直在测试这个,每当页面 DOM 被修改时,我都会收到一堆提示 "modified message sent," 但 none 提示 "modified message recieved." Thoughts/tips?
您没有声明和使用发送到接收方事件侦听器的参数。您的 modified
参数作为传递给回调的参数的 属性 发送。这就是您在使用代码时必须从中获取它的地方。另外,我在你的回调开始时添加了一个 console.log()
这样你就可以看到它是否被调用:
chrome.runtime.onMessage.addListener(function(message) {
console.log("received message");
if (message.modified == "true") {
alert("modified message recieved");
fourth();
}
});
注意:为 true 和 false 传递字符串有点奇怪。为什么不直接使用布尔值?
所以我对 Chrome 的消息传递非常陌生,我正在尝试使用它在修改页面的 DOM 时提醒我的后台页面 (使用一些注入的 js)。
我只是想进行单向通信,但如果我在分机号为 运行 时在选项卡上打开控制台,它会告诉我 "Uncaught Error: Error connecting to extension [my extension id]."
为简单起见,我会说我的背景页面 background.js 具有以下代码行:
chrome.runtime.onMessage.addListener(
function(){
if (modified == "true") {
alert("modified message recieved");
fourth();
}
}
);
我的内容脚本是:
function subtreeModified(){
chrome.runtime.sendMessage({modified: "true"});
alert("modified message sent");
}
document.addEventListener("DOMSubtreeModified", subtreeModified, false);
我一直在测试这个,每当页面 DOM 被修改时,我都会收到一堆提示 "modified message sent," 但 none 提示 "modified message recieved." Thoughts/tips?
您没有声明和使用发送到接收方事件侦听器的参数。您的 modified
参数作为传递给回调的参数的 属性 发送。这就是您在使用代码时必须从中获取它的地方。另外,我在你的回调开始时添加了一个 console.log()
这样你就可以看到它是否被调用:
chrome.runtime.onMessage.addListener(function(message) {
console.log("received message");
if (message.modified == "true") {
alert("modified message recieved");
fourth();
}
});
注意:为 true 和 false 传递字符串有点奇怪。为什么不直接使用布尔值?