Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在窗口刷新Javascript时停止此函数_Javascript - Fatal编程技术网

如何在窗口刷新Javascript时停止此函数

如何在窗口刷新Javascript时停止此函数,javascript,Javascript,嘿,我有这个函数,它在“onbeforeunload”和“onunload”上都能很好地工作,但唯一的问题是它在浏览器刷新时工作。我只想在浏览器刷新时停止它的工作。代码如下: <script type="text/javascript"> window.onbeforeunload = function() { var xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET", "/logout.php"

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

<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括起来。