0

嘿,我有这个功能在“onbeforeunload”和“onunload”上都能很好地工作,但唯一的问题是它在浏览器刷新时工作。我只想在浏览器刷新时阻止它工作。这是代码:

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

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

4

3 回答 3

1

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

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

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

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

于 2013-09-15T20:08:37.307 回答
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();
  }
}
于 2013-09-15T20:12:50.860 回答
0

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

于 2013-09-15T20:00:16.260 回答