📅  最后修改于: 2023-12-03 15:21:54.609000             🧑  作者: Mango
在使用浏览器扩展时,有时需要从扩展中的非内容脚本向内容脚本发送数据(传递消息)。这可以通过使用chrome.runtime.sendMessage()函数来实现。下面是详细介绍:
chrome.runtime.sendMessage({message: "hello"}, function(response) {
console.log(response);
});
这将向扩展中所有内容脚本发送一个包含"message"属性的消息对象,并指定一个回调函数来在接收到响应后执行。
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
console.log(request.message);
sendResponse({response: "world"});
});
这将向内容脚本注册一个监听器,用于在接收到消息时将"message"属性打印到控制台,并返回一个包含"response"属性的响应对象。
需要注意的是,chrome.runtime.sendMessage()和chrome.runtime.onMessage.addListener()之间的通信是异步的。因此,在使用sendMessage()发送消息之后,必须使用回调函数来处理响应消息。
此外,如果发送消息前,需要检查扩展是否安装,可以在非内容脚本中使用chrome.runtime.onInstalled.addListener()函数来监听扩展是否安装。
以上就是从非内容脚本扩展组件向内容脚本发送数据的介绍。