|
|
1
21
好 啊。我发现了问题所在。我想这是自72年以来chromes行为的一个变化。问题是如果你想打电话chrome.runtime.connect()在后台或弹出页面中打开另一端的频道之前,将出现该错误。 ChromeDocs说的是你可以立即发送消息。在过去,这只会起作用,消息要么被传递,要么被丢弃。但现在它失败了。
因此,我们的解决方法是在调用connect()之前先设置连接侦听器,只需延迟connect()调用:
如果您在内容脚本端为disconnect事件设置了侦听器,那么当您尝试时,它实际上会被调用chrome.runtime.connect你在另一端没有任何东西在听。哪种行为是正确的 Port LifeTime
我不知道有没有比setTimeout和尝试获取chrome.runtime.connect在那之后chrome.runtime.onConnect.addListener被调用。这不是一个好的解决方案,因为它会导致计时错误。也许另一个解决方法是反转通道的方向。并启动connectfrom popup而不是contentscript。 |
|
|
2
10
这是我用来解决这个问题的一个模式。内容脚本尝试到达背景脚本。如果后台脚本还不可用,那么我们可以从
背景脚本.js
|
|
|
3
3
如果您在开发Chrome扩展时收到此错误消息,请确保禁用您在浏览器中安装的其他Chrome扩展。尤其是“AdBlock”扩展似乎干扰了消息传递,并导致我的扩展抛出此错误。禁用AdBlock为我解决了这个问题。 |
|
|
4
2
使用的调用是
https://developer.chrome.com/extensions/manifest/externally_connectable |
|
|
ThePenguin · Chrome重复控制台条目 2 年前 |
|
|
SwiftyQA · 在随机持续时间内点击Chrome扩展的按钮 2 年前 |
|
|
OrionGL · 本应自动更新的范围输入在手动设置后停止更新 2 年前 |
|
|
Grasper · replaceAll函数禁用某些站点元素 2 年前 |