chrome.tabs.sendMessage和chrome.runtime.sendMessage的用法及区别

在 Chrome 扩展开发中,chrome.tabs.sendMessagechrome.runtime.sendMessage 是用于不同目的的消息发送 API,它们的主要区别在于消息的目标对象和发送范围:

  1. chrome.tabs.sendMessage:

    • 用于在扩展内的不同页面之间发送消息。
    • 消息的目标对象是指定的标签页或标签页中的content script。
    • 只能用于在扩展内的标签页之间进行通信,不能用于与扩展内的后台页面或其他扩展进行通信。
  2. chrome.runtime.sendMessage:

    • 用于在扩展内的不同组件之间发送消息,包括扩展内的所有页面和后台页面。
    • 消息的目标对象是扩展内的所有组件,包括所有页面和后台页面。
    • 不可以向标签页内的content script传递消息,此种情况应该用chrome.tabs.sendMessage
    • 可以用于在扩展内的任何组件之间进行通信,包括标签页、后台页面和弹出页面之间的通信,还可以用于与其他扩展进行通信。

 

注意点:chrome.runtime.sendMessage的参数的回调函数与前置await必须二选一,不可同时设置,如果同时设置,await将会不起作用。另外,如果回调函数设置了return true,将不会广播给所有响应页面或组件,如果需要广播给所有页面和组件,不可以设置return true,或不设置回调函数

posted @ 2024-03-17 22:39  网风笔记开发者  阅读(1773)  评论(0编辑  收藏  举报