消息在Chrome扩展程序和内容脚本之间传递

时间:2013-06-26 19:14:32

标签: google-chrome google-chrome-extension

我已阅读Message Passing Documentation并试图在我的代码中使用它,如下所示:

contentscript.js:

var buttonEl = document.getElementById("activateBtn");

if (buttonEl) {
    buttonEl.addEventListener("click", function () {
        alert("activateBtn clicked! " + chrome.runtime.sendMessage);

        chrome.runtime.sendMessage({button: buttonEl});
    });
}

backgroundscript.js:

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
    console.log("onMessage:", request);
});

目标是将内容脚本注入页面(在manifest.json中指定)然后运行。 脚本运行正常 - 显示警报消息,但不发送消息。还是没收到。无论哪种方式,该按钮都包含一个ID,我需要将其传递给我的特权背景代码。

当我在扩展程序的开发者控制台中运行代码时,我收到消息就好了 - 所以接收端似乎有效。

问题的任何线索?

谢谢你的时间。 :)

1 个答案:

答案 0 :(得分:2)

如果您检查注入页面的控制台,您应该看到类似

的内容
TypeError: Converting circular structure to JSON

这是因为您尝试通过JSON传递HTML对象。尝试仅传递按钮的ID,然后查看它是否有效。