如何在窗口刷新Javascript时停止此函数
嘿,我有这个函数,它在“onbeforeunload”和“onunload”上都能很好地工作,但唯一的问题是它在浏览器刷新时工作。我只想在浏览器刷新时停止它的工作。代码如下:如何在窗口刷新Javascript时停止此函数,javascript,Javascript,嘿,我有这个函数,它在“onbeforeunload”和“onunload”上都能很好地工作,但唯一的问题是它在浏览器刷新时工作。我只想在浏览器刷新时停止它的工作。代码如下: <script type="text/javascript"> window.onbeforeunload = function() { var xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET", "/logout.php"
<script type="text/javascript">
window.onbeforeunload = function() {
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", "/logout.php", false);
xmlhttp.send();
};
</script>
window.onbeforeunload=函数(){
var xmlhttp=new XMLHttpRequest();
open(“GET”,“/logout.php”,false);
xmlhttp.send();
};
当浏览器仅刷新时,如何阻止其发生 您可以使用会话存储并在其中设置标志值,以确定页面是否已加载。但请记住有关本地存储的规则,以及在关闭broswer并重新打开它之前,该值将保持设置状态的事实。首先,您需要捕获卸载事件并设置cookie:
document.cookie="lastUnloadTime=" + (new Date()).toString();
在卸载处理程序中,设置cookie:
document.cookie="lastUnloadTime=" + (new Date()).toString();
然后,您可以检查
onload
处理程序(通过查看document.cookie
的值),以查看(a)会话cookie是否存在,以及(b)您是否在短时间间隔内最后一次退出。您希望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();
}
}
我认为没有办法区分和页面刷新以及首次加载。而且不能像“onwindow.close”或“window.onclose”那样重写。请注意,只有IE8+和所有其他当前浏览器支持本地存储。如果您的应用程序需要支持IE7或更低版本,此方法将不起作用。您需要在onload处理程序中用引号将last_active括起来。