WebExtensions:onConnect 有什么意义? onMessage 似乎是多余的

问题描述

我试图找出如何识别(许多)创建的选项卡将消息发送到后台脚本,并认为要走的路是 background.js 中的 sender.tab.id browser.runtime.onMessage.addListener((msg,sender,respF)=>{})

但后来我遇到了 onConnect,它将一个 runtime.Port 对象传递给它的处理程序。它可以用来更优雅地识别哪个标签尝试与背景对话吗?如果不是,那么 onConnect 的意义何在?

解决方法

onConnect 的要点是为您提供一个 state 更改,您可以在其中管理您的 onConnect 逻辑 - 通常是修改您的侦听器。

例如

  • addListener 连接时应处于活动状态
  • removeListener 连接时应禁用
  • hasListener 检查连接的实例是否已经具有该侦听器
  • 等。例如另外onConnectExternal

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...