我已阅读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,我需要将其传递给我的特权背景代码。
当我在扩展程序的开发者控制台中运行代码时,我收到消息就好了 - 所以接收端似乎有效。
问题的任何线索?
谢谢你的时间。 :)
答案 0 :(得分:2)
如果您检查注入页面的控制台,您应该看到类似
的内容TypeError: Converting circular structure to JSON
这是因为您尝试通过JSON传递HTML对象。尝试仅传递按钮的ID,然后查看它是否有效。