1

クロスブラウザで、各ブラウザウィンドウを一意に識別する方法はありますか?
ウィンドウに固有の値をいくつか保存する必要があります。
ユーザーが同じブラウザーで同じサイトに対して 2 つのウィンドウを開いた場合でも。

Ajax は関係なく、リンクをクリックするたびに新しいページが読み込まれます。

そして、サーバーからその名前にどのようにアクセスしますか? (このために、私はphpを使用すると仮定しますが、他の言語の例も良いです)

4

2 に答える 2

3

すべての 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 ページのキャッシュ ヘッダーを送信しないようにしてください。

于 2012-05-17T14:55:46.320 に答える
2

window.nameJavaScript で設定できます。奇妙なことに、数メガバイトの文字列データを保持することもでき、クライアント側のストレージとして使用されることもあります。

呼び出し元のウィンドウを知るために、リクエストごとに名前をサーバーに返す必要があります。

于 2012-05-17T14:09:51.757 に答える