0
如果URL是test.com,我打開與內容腳本的背景的長期連接。我正在使用chrome.runtime.connect。但是如果我用test.com打開多個選項卡,我會從後臺腳本獲取多個onMessage調用。鉻擴展多個選項卡和chrome.runtime.connect
問題是內容腳本沒有與多個選項卡共享,但端口如何?
如果URL是test.com,我打開與內容腳本的背景的長期連接。我正在使用chrome.runtime.connect。但是如果我用test.com打開多個選項卡,我會從後臺腳本獲取多個onMessage調用。鉻擴展多個選項卡和chrome.runtime.connect
問題是內容腳本沒有與多個選項卡共享,但端口如何?
這是設計,因爲如果您沒有撥打runtime.Port.disconnect
,將保持以前的連接,並且每次打開一個帶有test.com
的新選項卡,都會加載內容腳本並開始建立另一個長期連接。
你可以稱之爲runtime.Port.disconnect
削減當前連接創建一個新的選項卡時,您也可以通過Port
區分不同的連接,您可以在runtime.onConnect.addListener(function(port){});
,其中包含tab
發件人的唯一信息訪問port.MessageSender
。
嗯,所以它不是內容腳本的東西,它是端口連接。所以如果我有2個標籤打開和2個端口連接,任何從後臺到每個端口的請求將是兩次。所以每個標籤都會收到2個請求,對嗎? – pvnarula
@pvnarula,只要連接沒有終止。 –
非常感謝@haibara。它解決了這個問題。 :) – pvnarula