0

我已经阅读了消息传递文档并尝试在我的代码中使用它,如下所示:

内容脚本.js:

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

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

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

背景脚本.js:

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

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

当我在扩展程序的开发人员控制台中运行代码时,我收到的消息很好 - 所以接收端似乎工作。

有什么线索可以解决这个问题吗?

谢谢你的时间。:)

4

1 回答 1

2

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

TypeError: Converting circular structure to JSON

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

于 2013-06-26T19:35:41.990 回答