Js - 检测是否从历史记录中调用了页面

时间:2011-07-06 08:45:59

标签: javascript jquery html

  

可能重复:
  Can you detect/redirect a back button press through javascript?

我正在开发一个小型Web应用程序。在我的应用程序中,我必须知道用户何时单击"返回"按钮,所以我可以运行一些JavaScript代码。有没有这样的方法来检测它?

谢谢

2 个答案:

答案 0 :(得分:1)

好的,所以我发现JS API无法在没有提升权限的情况下访问历史对象的下一个属性,这让我想到了另一个方向。

表单字段会自动从浏览器的缓存中提取,从而保存历史数据。虽然这是真的,但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;
}

答案 1 :(得分:0)

你做不到。您可以绑定一个事件,以便当您的用户离开页面时发生某些事情(使用onbeforeunload或unload()来执行此操作)但是无法知道他已经去了哪里