微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从注入的代码到后台脚本的 SendMessage

如何解决从注入的代码到后台脚本的 SendMessage

我已将一个脚本(存储在本地主机上)注入到网页中。

chrome.tabs.executeScript(null,{
    file: 'js/content.js',/* my content script */   },() => {
    connect(show_floater) //this is where I call my function to establish a connection     });
});

上面的代码是我从后台脚本中注入代码的方式。

chrome.runtime.sendMessage({ text: "am I connected?" });

这段代码是困扰我的部分。我正在尝试向后台脚本发送消息。我收到此错误

未捕获的类型错误:runtime.sendMessage 调用错误(可选字符串 extensionId、任何消息、可选对象选项、可选函数 responseCallback):从网页调用的 chrome.runtime.sendMessage() 必须指定扩展 ID(字符串)它的第一个论点。 在 elemRelease (test.js:93)

所以我尝试的是添加扩展 ID:

chrome.runtime.sendMessage('jlebkcopkekjggkknplilgflekifmjkp',{ text: "am I connected?" });

错误消失但 bg 脚本中的侦听器没有被此调用触发

这是我的 bg 脚本的样子:

chrome.runtime.onMessage.addListener(function (msg,sender,sendResponse) {
    chrome.tabs.query({ active: true,currentwindow: true },(tabs) => {
        console.log('connected?');
        if (msg.text == "am I connected?") {
            // do stuff
    });
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。