为什么内容脚本(chrome扩展)没有接收到我从chrome页面操作弹出窗口发送的消息?

mum43rcc  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(252)

我试图从弹出窗口向我的主内容脚本发送一条消息,这将更改我使用该方法添加到页面中的一些值 updateInfo(val) . 但是,我遇到了一个问题,我的消息要么根本没有被发送,要么就是content.js没有收到。我试着用 chrome.runtime.sendMessage() ,但这不起作用,所以我做得太过分了,我给每个标签都发了一条信息。my content.js仍然没有收到该消息。我已经在chrome调试器中确认了这一点。当我改变弹出窗口中的选择框时,它会点击 changeYearInfo() ,但content.js中从未收到该消息。
my content.js:

chrome.runtime.onMessage.addListener(
  function (request, sender, sendResponse) {
    if (request.message === "Year Value Changed") {
      let newVal = request.value;
      updateInfo(newVal);
    }
  });

my popup.js:

function changeYearInfo() {
    let newYearVal = document.getElementById('yearSessions').value;

    chrome.tabs.query({}, tabs => {
        tabs.forEach(tab => {
            chrome.tabs.sendMessage(tab.id, {
                "message": "Year Value Changed",
                "value": newYearVal
            });
      });
    });
}
document.addEventListener('DOMContentLoaded', function () {
    document.getElementById('yearSessions').addEventListener("change", changeYearInfo);
}
);

我将如何解决此问题?我已经成功地多次使用从background.js到content.js的消息传递,反之亦然,但这是我第一次尝试从弹出窗口向内容发送消息。
编辑:这个问题已经解决了。问题不在于消息传递,而是我根据调试器工具得出的结论,并且在尝试检查content.js中是否接收到我的消息时,我错误地使用了弹出调试器

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题