javascript - 如何检测搜索结果页面中的项目已在另一个浏览器选项卡中打开

标签 javascript html navigation browser-history browser-tab

我搜索了 SO,这个问题有 been asked before several times ,但我没有找到任何答案来解释我想要实现的行为是如何实际实现的。

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

屏幕截图:enter image description here

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

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

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

还剩下什么?

最佳答案

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

如果您也在存储中设置当前时间,您可以通过查看“最后一次标签时间”是否超过 30 秒或类似时间来检查页面是否关闭。

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

关于javascript - 如何检测搜索结果页面中的项目已在另一个浏览器选项卡中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237363/

相关文章:

javascript - 获取脚本中评估的每个语句的行号

链接上的 jQuery 单击以启用加载图形

iphone - iphone上的网站问题

html - 将 div 设置为其兄弟宽度

html - 如何在我的导航栏中使用 CSS 对齐我的 Logo ?

html - 导航 Sprite 未对齐

javascript - 通过 Javascript 访问 HTML 表格中的标签

javascript - 使用 Javascript 滑动手势 : Live translate swipe position to position of element?

html - 如何传递 GET 参数并仍然使用 # 跳转到我的页面的一部分?

javascript - 如何使用 Spotify 应用程序 API 制作大型专辑播放器?