【问题标题】:Email link that opens in existing tab if the domain is the same如果域相同,则在现有选项卡中打开的电子邮件链接
【发布时间】:2020-01-08 07:39:37
【问题描述】:

我有用户注册过程,在此过程结束时会向注册用户发送一封电子邮件以确认用户的电子邮件。然后用户转到他/她的电子邮件并找到带有确认链接的电子邮件。

此时用户打开了两个选项卡(但可以打开更多)- 电子邮件选项卡和我的域的选项卡,我们称之为mydomain.com

是否有可能,当用户单击电子邮件中的确认链接时,已经打开的 mydomain.com 选项卡会更新?

现在,当用户单击确认链接时,会创建一个指向 mydomain.com 的新选项卡,这会为该站点创建两个实例,这很好但并不理想。

我知道我可以创建一个定期检查用户是否确认或打开 websocket 的函数,但我想知道是否有更简单的方法。

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    您可以使用window.close(); 关闭其中一个选项卡。

    这是一个包含两个文件的工作示例: 以下逻辑在 3 秒后关闭选项卡。

    index.php:

    <h1>Confirm your email by clicking on the below button</h1>
    <a href="http://localhost/confirm.php" target="_blank">Click here to confirm</a> 
    

    confirm.php:

    <html>
    <head>
    <script>
    function timeToClose(){
    
        setTimeout(function(){ window.close(); }, 3000); // or some other logic
    
    }
    timeToClose();
    </script>
    <title>Confirmed</title>
    </head>
    <body>
    Thank you for confirming your email.
    </body>
    </html>
    

    【讨论】:

    • 如果您拥有该域并通过您的域进行确认,则此方法有效,但如果您通过电子邮件确认,则无效。 “单击以确认您的电子邮件”将在您的电子邮件选项卡中,因此如果您使用 gmail,则在您确认的位置打开的选项卡是 gmail.com,您无法控制。
    • 我假设他们已经在一个选项卡中打开了您的网站,在另一个选项卡中打开了他们的电子邮件。现在,如果他们单击该电子邮件中存在的链接,它将打开一个新选项卡或在同一选项卡中。在这两种情况下,他们打开的是您的网站,如果您关闭该选项卡,您就完成了(因为他们已经在另一个选项卡中打开了您的网站)。
    猜你喜欢
    • 1970-01-01
    • 2012-08-18
    • 2019-02-27
    • 1970-01-01
    • 2019-07-14
    • 2019-05-18
    • 2013-11-11
    • 2016-03-26
    • 1970-01-01
    相关资源
    最近更新 更多