你能通过javascript检测/重定向后退按钮吗?

时间:2010-10-04 22:42:20

标签: javascript

如果用户点击后退按钮,我正在尝试检测并更改浏览器行为。

这是否可以通过Javascript实现?

3 个答案:

答案 0 :(得分:4)

哇,我刚刚通过阅读本教程的javascript学到了很多东西。 它谈到了以下几点:

使用Javascript掌握后退按钮

  • window.onbeforeunload
  • 你真的,确定要离开我光荣的页面吗?
  • 检测用户何时单击取消
  • 真正的动态页面
  • 一些安全考虑事项。
  • 你无法改变历史,最后
  • 如果你必须控制历史

讲述了如何锁定历史。您可以进行有限的更改。但是你可以放置一个替换URL,这样如果一个人决定返回它会将它重定向到另一个页面。出于安全原因,如果一个人登录然后退出,而另一个人按下后退按钮,该页面将被带到替换页面。

检查出来 它非常简短,精确,内容丰富的文章/教程,包含许多java片段,可以帮助您完成每个部分。

http://www.hunlock.com/blogs/Mastering_The_Back_Button_With_Javascript

我希望这会有所帮助。

<强> PK

答案 1 :(得分:1)

我刚刚问了同样的问题,因为这是你的副本而被关闭了。这是我的解决方案的本质:

表单字段会自动从浏览器的缓存中提取,从而保存历史数据。虽然这是真的,但javascript代码每次都是独立运行的。

所以我创建了一个小的隐藏字段来保存时间戳并将其与javascript生成的数据时间进行比较。

这是代码,我相信它可以更好地实现,虽然时间很短:

$(document).ready(function () {
     var date = new Date();
     var clientMiliseconds = date.getTime();
     clientMiliseconds = roundTime(clientMiliseconds);
     var serverTimeStamp = $('#' + '<%= hfTimeStamp.ClientID %>').val();
     serverTimeStamp = roundTime(serverTimeStamp);
     alert(serverTimeStamp == clientMiliseconds);
});


function roundTime(time) {
    time = Math.floor(time);
     //since the server renders the time components a few seconds before the page is downloaded 
     //which also depends on where you assign the date on the serverside 
     //we've got a small inaccuracy of few seconds. we neglect these seconds, assuming that it would take the user
     //a few seconds to click the back button

     time = time / 10000;
     time = Math.floor(time);
     return time;
}

答案 2 :(得分:0)

只能在html页面中实现“Back”的链接,然后在那里添加你的JS函数。但是,不可能在JS中检测用户正在使用浏览器做什么(例如单击浏览器后退按钮),因为它发生在加载页面的上下文之外,并且没有标准规范来为Web服务器提供数据来自浏览器GUI。您可以尝试开发一个自定义插件,以便在浏览器上运行并向www服务器提供数据,但同样,这是一个非标准的解决方案,并非所有用户都可以非常轻松地安装某些第三方插件。

希望这有帮助。