是否可以检测用户是否打开了您网站的多个选项卡?

新手上路,请多包涵

我只是在考虑整个网站注册过程。

用户访问您的站点并注册,然后您告诉他您已经向他发送了一封电子邮件,他需要验证他的电子邮件地址。所以他点击 Ctrl + T ,弹出一个新标签,点击他的 Gmail 收藏按钮,没有阅读你冗长的欢迎电子邮件中的一个字,而是点击了他看到的第一个链接。 Gmail 在另一个选项卡中打开您的网站…

他不需要也不希望为您的站点打开两个选项卡,他只想查看您在他注册之前不允许他访问的该死页面。

那么我们该怎么办?我看到一个网站(但我忘了它是什么)做得非常好,它实际上刷新了我打开的第一个选项卡,而无需我按任何按钮。

我在想,如果我们能够检测到用户是否已经打开了您网站的选项卡,那可能会很好,我们可以自动关闭新的验证选项卡,或者告诉他他可以关闭它可以返回到他的其他选项卡(我们现在已经刷新并让他登录)。

或者,也许当他收到你烦人的“请检查你的电子邮件”消息时,他直接转到他的电子邮件,用他的电子邮件替换你的站点,他非常清楚电子邮件会再次将他链接回该站点。在那种情况下,我们不想关闭选项卡,但也许可以保存他之前的位置,然后再次将他重定向到那里?

无论如何,这只是用例……问题仍然存在。 我们可以检测用户是否已经打开了您网站的选项卡?


这个问题 不是 关于如何检测用户 何时 完成注册过程。 Ajax 轮询或彗星可以解决该问题。我特别想知道用户是否已经打开了您网站的选项卡。

原文由 mpen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 402
2 个回答

我来晚了(一年多),但我不禁注意到你错过了一个非常简单和优雅的解决方案(可能还有你看到的那个网站使用的)。

使用 JavaScript,您可以通过以下方式更改当前打开的窗口的名称:

 window.name = "myWindow";

然后,当您发送确认电子邮件时,只需执行以下操作(假设您发送的是 HTML 电子邮件):

 <a href="verificationlink.php" target="myWindow">Verify</a>

这应该导致 verificationLink 在您的网站已经加载到的窗口内打开,如果它已经关闭,它将打开一个新选项卡,并指定窗口名称。

原文由 88ad 发布,翻译遵循 CC BY-SA 3.0 许可协议

当用户打开另一个选项卡或另一个窗口甚至另一个浏览器时,您可以停止页面功能

$(window).blur(function(){
    // code to stop functioning or close the page
});

原文由 user2511671 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题