繁体   English   中英

如果用户单击后退浏览器按钮,我们可以导航到其他页面吗?

[英]Can we navigate to a different page if the user clicks on the back browser button?

我收到了Eric的一个非常有用的答案,即如何显示确认,即用户单击浏览器的后退按钮,从而为用户提供是否要返回的选择。

以下是他的答案:

您可以使用beforeunload事件来实现。

$(window).bind("beforeunload", function() {
    return "HI"; // Return whatever message you want
});​

小提琴

(要使用小提琴,只需重新加载页面,或导航离开或其他。)

我还建议您在有人以所需的方式离开页面时将其解除绑定(取消按钮?),否则您可能会遇到不良行为。

例如:

$("a").click(function() {
    $(window).unbind("beforeunload");
});

现在,下面是我们讨论的内容,我们不知道是否有一种干净的方法可以做到这一点,但是我想尝试实现的是,如果用户确实确认他们要离开页面,那么我想浏览用户使用其他脚本(Text4.php),在此脚本中,它只是破坏了会话并将用户注销。 但是我想首先知道是否可行,其次您想回答这个问题的想法是什么?

这是不可能的。 您无法在用户访问的页面上模拟用户。 不要尝试为我控制浏览器,只需确保您的页面在我访问时在浏览器上显示并能正常工作。

不,afaik,当用户决定关闭选项卡,窗口或向后导航时,您无法更改URL。 这是有充分理由的。 在我决定离开此页面后,我不希望任何人将我导航到某些会员/垃圾邮件/任何网站:D

考虑对您的注销脚本进行异步调用,然后将用户指向所需的页面。

标记

<a href="path/to/logout" id="yourlogoutlink">Logout</a>

JS

$("#yourlogoutlink").click(function(e) {

    e.preventDefault();

            if(!confirm("Leave the page?"))
                return;

    $.post( $(this).attr('href'), function(data){

        $(window).unbind("beforeunload");
        window.location.href = '/some/url';

    } );

});

您可以尝试使用History API ...

您可以尝试使用这些跨浏览器的API。

https://github.com/browserstate/History.js/

https://github.com/devote/HTML5-History-API

您不需要JavaScript即可执行此操作。 我会在您的初始页中执行以下操作。

session_start();
if(isset($_session['token']){
 //do log out stuff
} else {
 $_session['token'] = //generate random var here
}

页面加载时,它会查看是否设置了变量,如果已设置,则注销,如果未设置,则注销。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM