gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:05:41 24 4
gpt4 key购买 nike

我已将我的 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
}
});

我的 ma​​nifiest 肯定注入(inject)了这些代码。

但是在运行 chrome.runtime.sendMessage 之后没有任何反应。我进行了搜索,但没有发现任何问题。有人和我有同样的问题吗?谢谢

最佳答案

我不知道为什么它在 56.0.2924 中对你有效,因为很久以前在 49.0.2622.0 中这种行为是有意改变的,请参阅 crbug.com/479425提交 r369379 :

Never connect a port to the same frame. Connecting to the same frame does not make sense because onMessage should not be triggered for the same frame.

它在 Chrome 49 之后为您工作的事实是一个错误,现已修复。
crbug.com/704108 中已报告了相同的问题。所以你可以给它加注星标以跟进进度。


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

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

chrome.runtime.onMessage.addListener(onMessage);

然后直接调用它:

onMessage(.......);

关于javascript - Chrome 版本 57.0.2987 中的 chrome.runtime.sendMessage 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43066596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com