哪里可查看chrome.runtime.onConnect.addListener及相关参数的官方文档
Chrome扩展消息传递相关参数说明
1. chrome.runtime.onConnect.addListener 相关参数定位
你查找的两个页面属于功能概览文档,onConnect的完整参数逻辑、以及你提到的三个对象的详细定义,都在runtime API的事件定义规则内:
chrome.runtime.onConnect.addListener触发后会返回Port长连接对象,你提到的request/sender/sendResponse实际是chrome.runtime.onMessage.addListener(短连接消息监听)的回调参数;如果是用onConnect实现的长连接,消息需要绑定到Port.onMessage监听,参数结构和短连接回调一致。
2. 三个参数的具体说明
request
该对象没有固定的内置字段,完全由消息发送方调用sendMessage或者Port.postMessage时传入的第一个参数决定:你发送什么结构的内容,接收端拿到的request就是什么结构,没有系统预设的固定字段。如果是外部网页/其他扩展给你的扩展发消息,request就是对方自定义传入的内容结构。
sender
是浏览器内置的固定结构对象,存储消息发送方的身份信息,常用字段如下:
tab:发送消息的标签页对象,仅当消息来自标签页时存在,包含标签页ID、页面URL等信息id:发送消息的扩展/应用的唯一IDurl:发送消息的页面完整URLframeId:发送消息的iframe ID,消息来自顶层框架时值为0origin:发送方的源地址,格式如https://www.example.com
sendResponse
是浏览器提供的回调函数,调用时传入你要回传给发送方的内容即可。需要注意:如果要异步调用这个函数,需要在onMessage回调的末尾返回true,否则消息通道会提前关闭,回复内容无法正常发送。
3. 获取request内容的方法
因为request是完全自定义的结构,你可以先在回调里打印该对象确认实际结构,再按结构读取对应字段即可,示例代码如下:
短连接监听示例
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { // 打印完整request结构 console.log('收到的request内容:', request) // 确认结构后即可按字段读取,比如request.data、request.type等 })
长连接(onConnect)监听示例
chrome.runtime.onConnect.addListener((port) => { port.onMessage.addListener((request, port) => { // 打印长连接收到的request结构 console.log('长连接收到的request内容:', request) // 长连接回复消息用port.postMessage(回复内容)即可 }) })
内容的提问来源于stack exchange,提问作者jeribeb
相关产品推荐
相关产品推荐

