2012-03-06 11 views
2

同じドメインに2つ(またはそれ以上)のタブが開いている場合は、他のタブの存在を感知する簡単な方法があります行う)?私はwindow.open()関数があることを理解していますが、私は別のウィンドウから一つのウィンドウを開いていません。代わりに、ユーザーがmydomain.comに2つのタブを表示するとします。同じドメインの他のタブ/ウィンドウの存在を検出する

私は定期的にメッセージとチェックメッセージを残しているHTML5ローカルストレージを使用していくつかのコードを書いていますが、これはちょっと複雑です。

答えて

-2

html5セッションストレージを使用すると、ウィンドウ間でデータを共有できるため、特定のドメインのウィンドウを開くたびにセッションストレージ変数を増やすことができます。

+0

大丈夫ですが、ウィンドウ1が来て、変数numWindowsが1になったとしましょう。ウィンドウ2が来てnumWindows = 2です。ウィンドウ1が閉じていると、これがいつ発生するのか予測できないため、私のカウンターはオフになります。 – zenna

+0

または、ストレージイベントを使用できますか? – zenna

+0

あなたはウィンドウがイベントwindow.onbeforeunloadで閉じられたことを検出できるので、その時点でいくつかのコードを実行することができます。 – mpm

2

localStorage(新しいタブを開くときにカウンタをインクリメントする)にカウンタを設定し、タブを閉じるときに前回の負荷に応じてカウンタを減らすことは信頼できる解決策ではありません。ブラウザを強制終了すると、実行されるのでカウンタは減分されません。

1つのタブが開いていて、 "tabs_opened" localStorageカウンタが1の場合は、何らかの理由でブラウザを強制終了する必要があります。ブラウザーを再度開いて同じWebサイトにアクセスすると、 "tabs_opened"カウンターが減少しなかったので、 "tabs_opened"カウンターは2になります。

申し訳ありませんが、私が言ったことはまさに答えではありません(ただし、コメントを追加するには評判が足りないためコメントを追加できません)。私はちょうどこのエッジケースを指摘したい。

関連する問題