Chrome版本57.0.2987中的chrome.runtime.sendMessage错误

时间:2017-03-28 10:05:22

标签: javascript google-chrome google-chrome-extension

我已将我的Google Chrome浏览器从版本: 56.0.2924 更新为 57.0.2987

我有一个扩展程序,它无法在这个新版本中运行。我发现了,发现原因是chrome.runtime.sendMessage不起作用。我在后台页面中发送了一条消息:

chrome.runtime.sendMessage({"name": EVENT_ENUM.JOB_INIT, "data": job});

我有一个听众(同一背景页):

chrome.runtime.onMessage.addListener(
   function (request, sender, sendResponse) {
     if (request.name == EVENT_ENUM.JOB_INIT) {       
       //do something
     }
   });

我的最明显肯定会注入这些代码。

但是在运行 chrome.runtime.sendMessage 之后什么也没发生。我搜索但没有问题。有人和我有同样的问题吗?谢谢

1 个答案:

答案 0 :(得分:3)

我不知道为什么它在56.0.2924中适合你,因为很久以前在49.0.2622.0中故意改变了这种行为,请参阅crbug.com/ {{}}} commit 479425

  

切勿将端口连接到同一帧。连接到同一帧没有意义,因为不应该为同一帧触发onMessage。

在Chrome 49之后,它对你起作用的事实是一个错误,现在已修复 crbug.com/r369379中已经报告了同样的问题,因此您可以将其加注星标以跟进进度。

解决方案显然是将侦听器提取到一个单独的函数:

function onMessage(message, sender, sendResponse) {
    .........
}

chrome.runtime.onMessage.addListener(onMessage);

然后直接调用它:

onMessage(.......);