2016-04-06 9 views
0

urlがtest.comの場合は、コンテンツスクリプトからバックグラウンドの長い接続を開きます。私はchrome.runtime.connectを使用しています。しかし、私がtest.comで複数のタブを開くと、私はバックグラウンドスクリプトから複数のonMessage呼び出しを受け取ります。chrome extension複数のタブとchrome.runtime.connect

質問はコンテンツスクリプトが複数のタブと共有されていないことですが、どのようにポートが来るのでしょうか?

答えて

1

runtime.Port.disconnectを呼び出さなかった場合、以前の接続が維持され、test.comで新しいタブを開くたびに、コンテンツスクリプトが読み込まれ、別の長期接続の確立が開始されるため、設計通りです。

あなたが送信者のtabなどユニークな情報が含まれているruntime.onConnect.addListener(function(port){});、上port.MessageSenderにアクセスすることができ、あなたは新しいタブが作成されたときに、現在の接続を切断するようにruntime.Port.disconnectを呼び出すことができ、またはあなたがPortによって異なる接続を区別することができます。

+0

ああ、コンテンツスクリプトなのではなく、ポート接続です。したがって、2つのタブが開いていて2つのポート接続がある場合、バックグラウンドから各ポートへのリクエストは2回になります。だから、各タブは2つのリクエストを受け取るでしょうか? – pvnarula

+1

@pvnarula、接続が終了しない限り –

+0

おかげさまで@hibara。それは問題を解決した。 :) – pvnarula

関連する問題