chrome.runtime.sendMessage()与chrome.runtime.onMessage.addListener()对应管关系,可否多对一
时间: 2024-04-04 21:04:00 浏览: 177
是的,`chrome.runtime.sendMessage()`和`chrome.runtime.onMessage.addListener()`是`chrome.runtime` API 中用于实现消息通信的两个方法,它们可以实现多对一的关系。
`chrome.runtime.sendMessage()`方法用于向其他扩展程序、内容脚本或后台页面发送消息,而`chrome.runtime.onMessage.addListener()`方法用于监听接收来自其他扩展程序、内容脚本或后台页面发送的消息。
可以在一个扩展程序中多次调用`chrome.runtime.onMessage.addListener()`方法来监听来自不同发送者的消息。当有消息发送时,所有注册的监听器都会被触发,但只有与消息发送者匹配的监听器会处理该消息。
以下是一个示例,演示了多对一的关系:
```javascript
// background.js
// 监听来自不同发送者的消息
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
console.log("收到消息:" + message);
sendResponse("已收到消息");
});
// content_script.js
// 向后台页面发送消息
chrome.runtime.sendMessage("这是来自内容脚本的消息", function(response) {
console.log("收到回复:" + response);
});
// extension.js
// 向后台页面发送消息
chrome.runtime.sendMessage("这是来自扩展程序的消息", function(response) {
console.log("收到回复:" + response);
});
```
在上面的示例中,background.js、content_script.js和extension.js分别是扩展程序中不同的脚本文件。它们都可以调用`chrome.runtime.sendMessage()`方法向后台页面发送消息。后台页面中注册的`chrome.runtime.onMessage.addListener()`方法会接收到来自不同发送者的消息,并分别处理。
阅读全文