chrome.tabs.sendMessage和chrome.runtime.sendMessage的用法及区别
在 Chrome 扩展开发中,chrome.tabs.sendMessage
和 chrome.runtime.sendMessage
是用于不同目的的消息发送 API,它们的主要区别在于消息的目标对象和发送范围:
-
chrome.tabs.sendMessage:
- 用于在扩展内的不同页面之间发送消息。
- 消息的目标对象是指定的标签页或标签页中的content script。
- 只能用于在扩展内的标签页之间进行通信,不能用于与扩展内的后台页面或其他扩展进行通信。
-
chrome.runtime.sendMessage:
- 用于在扩展内的不同组件之间发送消息,包括扩展内的所有页面和后台页面。
- 消息的目标对象是扩展内的所有组件,包括所有页面和后台页面。
- 不可以向标签页内的content script传递消息,此种情况应该用chrome.tabs.sendMessage
- 可以用于在扩展内的任何组件之间进行通信,包括标签页、后台页面和弹出页面之间的通信,还可以用于与其他扩展进行通信。
注意点:chrome.runtime.sendMessage的参数的回调函数与前置await必须二选一,不可同时设置,如果同时设置,await将会不起作用。另外,如果回调函数设置了return true,将不会广播给所有响应页面或组件,如果需要广播给所有页面和组件,不可以设置return true,或不设置回调函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?