如何知道哪个内容脚本与 Firefox 附加组件中的后台通信?

How to know which content script communicates with the background in a Firefox add-on?

根据this simple example: 如何知道哪个内容脚本(哪个选项卡)实际上正在向后台发送消息(第 10 行)?例如标签 ID.

example for background-script.js, the portFromCS has a sender property: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/Port

发件人是一个对象,其中包含 tab,特别是 tab.id https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/MessageSender

/* background-script.js */
browser.runtime.onConnect.addListener(port => {
    port.onMessage.addListener((msg) => {
        console.log("bg received", msg, "from tab", port.sender.tab.id);
    });
});

您还可以使用 "one-off" 或无连接消息 browser.runtime.onMessage

处理程序具有签名 (msg, sender, reply),其中发送方是与上面相同的 MessageSender 对象。