问题

今天写一个插件遇到一个问题,contnet_script给background传递信息
无论如何都无法传递过去,始终报错

Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.

排查

在仔细对比一下之后发现是因为我监听是使用的chrome.extension.onRequest.addListener
而我发送是使用的chrome.extension.sendMessage
在查看官方文档后发现虽然2个API都可以发送信息但是chrome.extension.sendRequest在Chrome 33以来已弃了,
虽说以及废弃使用了但是还是可以使用的,所以消息传递时需要注意监听和接受

解决

//background
chrome.extension.onRequest.addListener
//content_script
chrome.extension.sendRequest

或者

//background
chrome.extension.onMessage.addListener
//content_script
chrome.extension.sendMessage

千万不要混用,建议使用request最新的,如果你要兼容低版本的谷歌也可以使用message

标签: hack, chrome, 谷歌浏览器插件消息传递的坑

添加新评论