Google chrome extension chrome.runtime.onMessage Listener在单个sendMessage调用中多次启动
在单击按钮时,我试图发送消息,但我的侦听器被多次调用 popup.js:Google chrome extension chrome.runtime.onMessage Listener在单个sendMessage调用中多次启动,google-chrome-extension,Google Chrome Extension,在单击按钮时,我试图发送消息,但我的侦听器被多次调用 popup.js: chrome.tabs.sendMessage(tab.id, {action: "write", data: getData()}, function (response) { console.log(response,"!!!!");}); content.js: chrome.runtime.onMessage.addListener(test); function te
chrome.tabs.sendMessage(tab.id, {action: "write", data: getData()}, function (response) {
console.log(response,"!!!!");});
content.js:
chrome.runtime.onMessage.addListener(test);
function test(request, sender, sendResponse) {
if (request.action === "write") {
console.log("write");
}
return true;
}
有人知道我做错了什么吗?问题不完整:您需要展示如何声明/注入content.js。您可以使用
“所有帧”:true
或多次调用executeScript。这就是我在manifest.json中的配置方式“content_scripts”:[{“matches”:[“https://*/*”],“all_frames”:false,“js”:[“scripts/content.js”]}]```我在点击按钮时有这个语句chrome.tabs.executeScript(null,{file:“scripts/content.js”})代码>删除chrome.tabs.executeScript-当您在manifest.json中声明脚本时,脚本已经自动运行。非常感谢,它可以正常工作,但之前我遇到了这个错误,所以我将该语句放在了那里。”无法建立连接。接收端不存在'。知道发生此错误的原因。如果有条件地在content.js中添加侦听器,则可以保留当前代码:if(!chrome.runtime.onMessage.hasListeners())chrome.runtime.onMessage.addListener(test);