5

SOを検索したところ、この質問は以前 も何度か聞か れましたが、実装したい動作が実際にどのように実現されているかを説明する答えは見つかりませんでした。

私が念頭に置いているのは、booking.comの機能を模倣することです。この機能では、検索結果リストから検索結果を開くと、結果が別のタブ(またはウィンドウ)で開かれたことを示すdivが表示され、他のタブ(またはウィンドウ)が閉じられています。

スクリーンショット:ここに画像の説明を入力してください

最初の試みは、JavaScriptがリンクに添付されているかどうかを確認することでしたが、そうではありません。ページソースからURLをコピーして開くだけで、この機能が機能するためです。

そのため、サーバー側で何らかの方法で管理できると考え、wiresharkを起動して、開いている2つのページとサーバーの間のajax呼び出しをトラップしようとしました。多くのリクエストがありましたが、必要な情報を誰も渡していないようです(ホテルIDまたはいくつかのURLを推測します)。また、シークレットウィンドウまたは別のブラウザ(つまり、chromeではなくfirefox)ウィンドウでセッションIDを含む結果アイテムのURLを開くと、機能が機能しなくなることに注意してください。そのため、セッションまたはIPアドレスの追跡は除外されます。

私が考えることができた最後の試みは、検索結果ページが、別のページが開かれたときにドメインに設定され、閉じられたときに設定解除されたCookieをポーリングしていることでした。そこで、実際には内容が少しわかりにくいCookieを確認しましたが、他のタブの開閉で実際にCookieが変更されることはないため、この方法では変更できません。

何が残っていますか?

4

1 に答える 1

2

理論的には、localStorage / sessionStorageを使用して、すべてのページに現在のページのURLを設定し、「元の」ページで値がと同じでないかどうかを時々確認することで、これを行うことができるはずですdocument.location

ストレージにも現在時刻を設定すると、「最後のタブ時刻」が30秒以上前などでページが閉じているかどうかを確認できます。

ウェブサイトについては、アクセスして検索したところ、新しいタブが開いているという警告や何も表示されませんでした。

于 2013-03-06T01:57:07.407 に答える