回答

1

example为背景的script.js,所述portFromCS具有sender属性: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); 
    }); 
}); 

您也可以做“一次性”或无连接消息 browser.runtime.onMessage

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

+0

是的,谢谢你的作品。我可以在'browser.runtime.onMessage'中使用'sender.tab.id'。其中一条消息提供更多可能性。但是我必须小心,因为当从后台发送消息时,它也会在后台接收,所以我必须检查消息的内容以确保消息来自内容脚本。 – hayj

+0

@hayj,您使用的是哪个版本的Firefox?从同一个脚本发送的消息的接收事件是一个问题?据我所知,这是一个在Firefox 51中解决的错误。您是否在Firefox 51或更高版本中看到它? – Makyen

+0

我在51.0.1(64位)上,让我检查一下它是否不坏。 – hayj

相关问题