如何在窗口刷新Javascript上停止此功能

时间:2013-09-15 19:51:49

标签: javascript

嘿,我有这个功能在“onbeforeunload”和“onunload”上运行良好,但唯一的问题是它在浏览器刷新时有效。我想阻止它仅在浏览器刷新时才能工作。这是代码:

<script type="text/javascript">
    window.onbeforeunload = function() {        
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET", "/logout.php", false);
    xmlhttp.send();
    };
</script>

如何在浏览器只刷新时阻止它发生?

3 个答案:

答案 0 :(得分:1)

首先,您需要捕获unload事件并设置cookie:

在卸载处理程序中,设置一个cookie:

document.cookie="lastUnloadTime=" + (new Date()).toString();

然后,您可以检查onload处理程序(通过查看document.cookie的值)以查看(a)会话cookie是否存在以及(b)您是否最后一次退出时间间隔很短。

答案 1 :(得分:0)

您可以使用会话存储并在其中设置标记值以确定页面是否已加载。但请记住有关本地存储的规则以及在关闭broswer并重新打开它之前该值将保持设置的事实。

答案 2 :(得分:0)

您希望onload事件仅在用户暂时未访问该页面时才会运行。为什么不在页面在用户中时运行更新cookie的脚本。加载页面时,检查cookie是否在一段时间内未更新。为什么没有这样的东西:

window.setInterval(function(){document.cookie="last_active" + "=" + new Date().getTime();}, 60000);

然后我们可以获取cookie并测试用户是否只是刷新页面或者他们是否已经离开了一段时间

document.onload = function() {
  if(document.cookie[last_active] && document.cookie["last_active"] > new Date().getTime()){
    whateverScriptYouAreTryingToRun();
  }
}