Chrome消息传递。未捕获错误:连接到扩展程序时出错

时间:2015-01-28 18:32:00

标签: javascript google-chrome google-chrome-extension

所以我对Chrome的消息传递非常陌生,我试图用它来修改页面的DOM时使用一些注入的js来提醒我的后台页面)。

我只尝试单向通信,但如果我在扩展程序运行时打开选项卡上的控制台,它会告诉我"未捕获错误:连接到扩展程序时出错[我的扩展程序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时,我都会收到一堆警告,说明"已修改的消息已发送,"但没有人说"修改了收到的消息。"想法/提示?

1 个答案:

答案 0 :(得分:1)

您没有声明并使用发送到接收方的事件侦听器的参数。您的modified参数作为传递给回调的参数的属性发送。这是您在使用代码时必须从中获取的地方。另外,我在回调开始时添加了console.log(),这样你就可以看到它是否被调用:

chrome.runtime.onMessage.addListener(function(message) {
    console.log("received message");
    if (message.modified == "true") {
        alert("modified message recieved");
        fourth();
    }
});

注意:为true和false传递字符串有点奇怪。为什么不直接使用布尔?