求助:怎么判断页面是关闭还是刷新
想用JS来判断,浏览器是关闭还是刷新,要兼容火狐,IE,chrome 主流的那几个浏览器都得兼容。
function CloseWindows(evt){
var isIE=document.all?true:false;
evt = evt ? evt :(window.event ? window.event : null);
if(isIE){//IE浏览器
if(evt.clientY<0 || evt.altKey){
event.returnValue = Language_Lab_Index_LeaveWithoutSave;
}
}
else{
return Language_Lab_Index_LeaveWithoutSave;
}
}
在body中通过加入onbeforeunload="return CloseWindows(event)"。可以监听到上述浏览器的各种关闭离开页面的操作。但是很纠结的是这样写,在除了IE以外的浏览器 都没法判断是刷新还是关闭。求个大神指点下,其他的应该怎么写。谢谢了。
浏览器
chrome
ie
------解决方案--------------------将窗口引用存入一个变量,在窗口被关闭或刷新后通过这个变量来判断窗口的状态
前提是用户没有关闭所有的窗口。
------解决方案--------------------我用过一个近似判断刷新的方法:
在beforeunload事件中用cookie记录当前时间,
在页面的开始部分添加js读取cookie中的时间,并与当前时间比较,如果差值小于一定值(比如5秒)就认为用户的操作是刷新。
这只是近似判断,满足一般情况,可能存在极限情况下判断错误
------解决方案--------------------
一个方法:控制客户端浏览器的刷新行为(屏蔽按钮、热键、菜单等等刷新途径),并提供刷新按钮给用户点。
另一个方法:从服务器端判断用户请求的url是否和其当前url相同(除去随机变化的参数),如果相同则直接返回退回上一页的js脚本。