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以外的浏览器 都没法判断是刷新还是关闭。求个大神指点下,其他的应该怎么写。谢谢了。
14 个解决方案
#1
提供个思路也好啊 各位,很纠结啊~~ 客户这要求真把我难倒了... 试了很多种方法都没解决
#2
无解,ie可以获取到clientX当鼠标不在body,firefox这种获取不到,所以无法判断
#3
将窗口引用存入一个变量,在窗口被关闭或刷新后通过这个变量来判断窗口的状态
前提是用户没有关闭所有的窗口。
前提是用户没有关闭所有的窗口。
#4
用了一个比较笨的方法
var IsRefresh=false;
document.onkeydown=function(event){
if(event.keyCode==116)//键盘刷新 F5
{
IsRefresh=true;
}
}
然后判断IsRefresh的值,这样可以监听到F5刷新事件,但是通过右键的刷新没法捕捉捕捉...
var IsRefresh=false;
document.onkeydown=function(event){
if(event.keyCode==116)//键盘刷新 F5
{
IsRefresh=true;
}
}
然后判断IsRefresh的值,这样可以监听到F5刷新事件,但是通过右键的刷新没法捕捉捕捉...
#5
不行啊,用户那边那时候跟我说的是,不管关选项卡还是关浏览器,不管怎么关都要响应...也就是说关闭所有窗口也是其中一种状况。
#6
我用过一个近似判断刷新的方法:
在beforeunload事件中用cookie记录当前时间,
在页面的开始部分添加js读取cookie中的时间,并与当前时间比较,如果差值小于一定值(比如5秒)就认为用户的操作是刷新。
这只是近似判断,满足一般情况,可能存在极限情况下判断错误
在beforeunload事件中用cookie记录当前时间,
在页面的开始部分添加js读取cookie中的时间,并与当前时间比较,如果差值小于一定值(比如5秒)就认为用户的操作是刷新。
这只是近似判断,满足一般情况,可能存在极限情况下判断错误
#7
这方法不行啊,这是卸载掉当前页面,并从服务器端重新加载最新页面后,才能判断是刷新。但是我这边需要在当前页面卸载之前就要判断出是不是刷新了。
#8
一个方法:控制客户端浏览器的刷新行为(屏蔽按钮、热键、菜单等等刷新途径),并提供刷新按钮给用户点。
另一个方法:从服务器端判断用户请求的url是否和其当前url相同(除去随机变化的参数),如果相同则直接返回退回上一页的js脚本。
#9
其实这个好像还真没有一个好的办法,你屏蔽了键盘的快捷键,用户可以用右键菜单,你屏蔽了右键菜单,用户还可以用地址栏里面的刷新。
#10
你的要求好像是没办法实现,看来只能改需求了
#11
刷新之后 IsRefresh的值又是false了....这种显然不行
#12
这确实是个难题,
等大牛出现,
咱也学习学习
等大牛出现,
咱也学习学习
#13
我也遇到这样的问题,不知道怎么解决呀。
#14
求js判断页面刷新的方法
#1
提供个思路也好啊 各位,很纠结啊~~ 客户这要求真把我难倒了... 试了很多种方法都没解决
#2
无解,ie可以获取到clientX当鼠标不在body,firefox这种获取不到,所以无法判断
#3
将窗口引用存入一个变量,在窗口被关闭或刷新后通过这个变量来判断窗口的状态
前提是用户没有关闭所有的窗口。
前提是用户没有关闭所有的窗口。
#4
用了一个比较笨的方法
var IsRefresh=false;
document.onkeydown=function(event){
if(event.keyCode==116)//键盘刷新 F5
{
IsRefresh=true;
}
}
然后判断IsRefresh的值,这样可以监听到F5刷新事件,但是通过右键的刷新没法捕捉捕捉...
var IsRefresh=false;
document.onkeydown=function(event){
if(event.keyCode==116)//键盘刷新 F5
{
IsRefresh=true;
}
}
然后判断IsRefresh的值,这样可以监听到F5刷新事件,但是通过右键的刷新没法捕捉捕捉...
#5
不行啊,用户那边那时候跟我说的是,不管关选项卡还是关浏览器,不管怎么关都要响应...也就是说关闭所有窗口也是其中一种状况。
#6
我用过一个近似判断刷新的方法:
在beforeunload事件中用cookie记录当前时间,
在页面的开始部分添加js读取cookie中的时间,并与当前时间比较,如果差值小于一定值(比如5秒)就认为用户的操作是刷新。
这只是近似判断,满足一般情况,可能存在极限情况下判断错误
在beforeunload事件中用cookie记录当前时间,
在页面的开始部分添加js读取cookie中的时间,并与当前时间比较,如果差值小于一定值(比如5秒)就认为用户的操作是刷新。
这只是近似判断,满足一般情况,可能存在极限情况下判断错误
#7
这方法不行啊,这是卸载掉当前页面,并从服务器端重新加载最新页面后,才能判断是刷新。但是我这边需要在当前页面卸载之前就要判断出是不是刷新了。
#8
一个方法:控制客户端浏览器的刷新行为(屏蔽按钮、热键、菜单等等刷新途径),并提供刷新按钮给用户点。
另一个方法:从服务器端判断用户请求的url是否和其当前url相同(除去随机变化的参数),如果相同则直接返回退回上一页的js脚本。
#9
其实这个好像还真没有一个好的办法,你屏蔽了键盘的快捷键,用户可以用右键菜单,你屏蔽了右键菜单,用户还可以用地址栏里面的刷新。
#10
你的要求好像是没办法实现,看来只能改需求了
#11
刷新之后 IsRefresh的值又是false了....这种显然不行
#12
这确实是个难题,
等大牛出现,
咱也学习学习
等大牛出现,
咱也学习学习
#13
我也遇到这样的问题,不知道怎么解决呀。
#14
求js判断页面刷新的方法