5

我搜索了 SO 并且这个问题已经 几次了,但是我没有找到解释我想要实现的行为是如何实际实现的答案。

我的想法是模仿booking.com的功能,当您从搜索结果列表中打开搜索结果时,会出现一个表示该结果已在另一个选项卡(或窗口)中打开的div,并且在该其他选项卡(或窗口)已关闭。

截屏:在此处输入图像描述

第一次尝试是检查链接是否附加了一些 javascript,但事实并非如此,因为如果您只是从页面源复制 url,然后打开它,该功能就可以工作。

所以我认为它可以在服务器端以某种方式进行管理,启动wireshark来尝试捕获两个打开的页面和服务器之间的任何ajax调用。有很多请求,但似乎没有人传递所需的信息(我猜是酒店 ID 或某个 url)。另请注意,在隐身窗口或另一个浏览器(我的意思是,firefox 而不是 chrome)窗口中打开包含会话 ID 的结果项 URL 会破坏该功能;这样就排除了任何会话或 IP 地址跟踪。

我能想到的最后一次尝试是搜索结果页面正在轮询一些 cookie,该 cookie 在打开另一个页面时在域上设置,在关闭时取消设置。因此,我检查了 cookie,其内容实际上有点难以理解,但我所看到的是在其他选项卡打开和关闭时实际上没有更改任何 cookie,因此,再次,不能这样做。

还剩下什么?

4

1 回答 1

2

理论上,应该可以使用 localStorage/sessionStorage 来做到这一点,方法是在每个页面上设置当前页面 URL,并每隔一段时间在“原始”页面上检查该值是否与document.location.

如果您在存储事物中也设置了当前时间,则可以通过查看“最后一个选项卡时间”是否超过 30 秒或类似时间来检查页面是否关闭。

至于该网站,我访问了它并进行了搜索,但在我尝试它时根本没有看到任何警告或任何关于新标签打开的信息。

于 2013-03-06T01:57:07.407 回答