クロスブラウザで、各ブラウザウィンドウを一意に識別する方法はありますか?
ウィンドウに固有の値をいくつか保存する必要があります。
ユーザーが同じブラウザーで同じサイトに対して 2 つのウィンドウを開いた場合でも。
Ajax は関係なく、リンクをクリックするたびに新しいページが読み込まれます。
そして、サーバーからその名前にどのようにアクセスしますか? (このために、私はphpを使用すると仮定しますが、他の言語の例も良いです)
クロスブラウザで、各ブラウザウィンドウを一意に識別する方法はありますか?
ウィンドウに固有の値をいくつか保存する必要があります。
ユーザーが同じブラウザーで同じサイトに対して 2 つのウィンドウを開いた場合でも。
Ajax は関係なく、リンクをクリックするたびに新しいページが読み込まれます。
そして、サーバーからその名前にどのようにアクセスしますか? (このために、私はphpを使用すると仮定しますが、他の言語の例も良いです)
すべての URL のクエリ文字列に一意の引数を入れて維持することで、ウィンドウを識別することができます。たとえば、現在の URL が である場合、/foo.php?windowid=abhn7y76g7hygy7yhnui98u8mc
そのページの html の各URL は、ドキュメント内の URL やその他の URL とは異なる ID を持ちます。uniqid() は時間を使用するため、これに最適です。したがって、辞書順でIDを増やしています。
対処する必要がある 1 つのエッジ ケースは、誰かがまったく同じリンクを 2 回開いた場合です (クリックするか、URL をコピーして貼り付けて新しいウィンドウを手動で開いた場合など)。唯一の本当の解決策は、使用されたIDをサーバーに追跡させることであり、同じIDに対する2番目のリクエストに気付いた場合、リクエストを同じURLにリダイレクトしますが、新しいIDにリダイレクトします。これにより、すべてのブラウザ ウィンドウで一意の ID が維持されます。
考え直して、ID を html の URL に添付する必要さえありません。IDがない場合はサーバーにロジックを実行させ、新しいIDで同じURLにリダイレクトします。ID が以前に使用されていた場合は、新しい ID で同じ URL にリダイレクトします。
戻るボタンが使用された場合、ブラウザーがサーバーを再確認する必要があるため、html ページのキャッシュ ヘッダーを送信しないようにしてください。
window.name
JavaScript で設定できます。奇妙なことに、数メガバイトの文字列データを保持することもでき、クライアント側のストレージとして使用されることもあります。
呼び出し元のウィンドウを知るために、リクエストごとに名前をサーバーに返す必要があります。