本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/02/26/browser-runtime-onMessage/
摘要
本文主要讲述了:
- 作用
- 接收消息
- 回复消息
- Chrome
正文
作用
接收从background.scripts
或 ContentScripts 发送过来的消息,收到消息之后可以回复消息。
接收消息
示例:
content_script.js
1 | browser.runtime.onMessage.addListener(function (message, sender, sendResponse) { |
回复消息
注意:
- 这里的
sendResponse
,就是sendMessage
中的回调函数 - 如果要异步回复消息,必须在
onMessage
的回调函数中返回true
。否则等到回调函数执行完毕时,sendResponse
将随之失效 - 接收端使用
sendResponse()
回复的消息,只能被发送端的browser.runtime.sendMessage()
或browser.tabs.sendMessage()
的回调函数接收,不会被发送端的browser.runtime.onMessage
接收 - 如果多个 iframe 中的 ContentScripts 同时使用
sendResponse()
向background.scripts
回复消息,则background.scripts
只能收到其中一个消息
同步回复
以sendResponse()
形式回复消息。
示例:
content_script.js
1 | browser.runtime.onMessage.addListener(function (message, sender, sendResponse) { |
以Promise
形式回复消息。
示例:
content_script.js
1 | browser.runtime.onMessage.addListener(function (message, sender, sendResponse) { |
异步回复
以sendResponse()
形式回复消息。
示例:
content_script.js
1 | browser.runtime.onMessage.addListener(function (message, sender, sendResponse) { |
以Promise
形式回复消息。
示例:
content_script.js
1 | browser.runtime.onMessage.addListener(function (message, sender, sendResponse) { |
Chrome
示例:接收并同步回复消息
content_script.js
1 | chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) { |
示例:接收并异步回复消息
content_script.js
1 | chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) { |
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/02/26/browser-runtime-onMessage/
本文对你有帮助?请支持我
- 本文链接: https://jsweibo.github.io/2019/02/26/browser-runtime-onMessage/
- 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。