回答

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

相關問題