首页 > 解决方案 > 扩展脚本未从内容脚本接收消息 - chrome 扩展

问题描述

我有一个事件侦听器检查内容脚本中的鼠标移动,当检测到(即鼠标移动)时,它会向 popup.js 扩展脚本发送一条 chrome 消息。但是,popup.js 脚本似乎没有收到从内容脚本传递的任何消息。我还设置了从弹出窗口到内容脚本的辅助消息传递序列,该序列由于某种原因而起作用。

chrome.runtime.onMessage.addListener 回调中的打印在运行时不会打印。

popup.js:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
  console.log(request.selText);
  if (request.sender == "content" && request.selText == "disabled") {
    // Disabled for webpage - No action
  } else if (request.sender == "content" && request.selText !== 
    "disabled"){
    // Some action with request.selText
  }
});`

内容.js:

document.addEventListener('mousemove', function (e) {
    chrome.runtime.sendMessage({sender: "content", selText : ""});
}, false);

辅助消息传递(这有效):

popup.js:

chrome.tabs.sendMessage(tabs[0].id, {cTabSettings: true});

内容.js:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (request.cTabSettings === true) {
      // Some action
    } else if (request.cTabSettings === false) {
      // Some action
    }
});

我的预期结果是 request.selText 字段将在弹出检查器工具中打印,但事实并非如此。

标签: javascriptgoogle-chromegoogle-chrome-extension

解决方案


我在内容脚本消息传递回调的末尾添加了一个空函数调用,它就可以正常工作。

代码如下所示:

  chrome.runtime.sendMessage({sender: "content", selText : ""}, 
     function () {});

推荐阅读