嘿,我有这个功能在“onbeforeunload”和“onunload”上运行良好,但唯一的问题是它在浏览器刷新时有效。我想阻止它仅在浏览器刷新时才能工作。这是代码:
<script type="text/javascript">
window.onbeforeunload = function() {
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", "/logout.php", false);
xmlhttp.send();
};
</script>
如何在浏览器只刷新时阻止它发生?
答案 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();
}
}