javascript的页面关闭和刷新事件

网上找的 
1.用javascript重新定义 window.onbeforeunload()  事件 

在javascript里定义一个函数即可 (只在页面关闭时执行,刷新时不执行。)

Java代码    收藏代码
  1. function  window.onbeforeunload()  {  alert("关闭窗口")}   
  2.   
  3. alert()事件将会在关闭窗口前执行,你也可以用户决定是否关闭窗口   
  4.   
  5. function  window.onbeforeunload()  {    
  6. if  (event.clientX>document.body.clientWidth  &&  event.clientY<0 ||event.altKey)  //这个方法好像只适用于ie6,但ie7和firefox不能用,firefox是因为要为1.方法传入event才能用event,2.在文档外(document)外就没有event的clientX,clentY,X,Y  
  7.      window.event.returnValue="确定要退出本页吗?";    
  8. }   



2.用onUnload方法 

在body 标签里加入onUnload事件 

Java代码    收藏代码
  1. body onUnload="myClose()"   



然后在javascript里定义myClose()方法 

但是onUnload方法是在关闭窗口之后执行,不是在关闭窗口之前执行,如果你想在关闭窗口之前做判断,请用第一种方法 

以上的方法在ie6中,在页面刷新时候 不会调用是因为event.clientX>document.body.clientWidth 


适用于firefox和ie的 

Java代码    收藏代码
  1. function getEvent() //同时兼容ie和ff的写法, 这个方法是网上copy的    
  2.     {   
  3.         if(document.all)   return window.event;   
  4.         func=getEvent.caller;   
  5.         while(func!=null){   
  6.             var arg0=func.arguments[0];   
  7.             if(arg0)   
  8.             {   
  9.                 if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))   
  10.                 {   
  11.                     return arg0;   
  12.                 }   
  13.             }   
  14.             func=func.caller;   
  15.         }   
  16.         return null;   
  17.     }   
  18.   
  19.     function ConfirmClose() {   
  20.         if(window.event)   
  21.             window.event.returnValue = "在关闭窗口前确认您是否已经保存了信息!";   
  22.         else   
  23.             getEvent().preventDefault();//for firefox   
  24.     }   
  25.   
  26.     function on_page_loaded()   //自己定义的body的onload事件    
  27.     {   
  28.         try{   
  29.             if(!window.onbeforeunload )    //为了不覆盖原来的onbeforeunload方法,先判断   
  30.                 window.onbeforeunload = ConfirmClose;   //todo 增加了窗口关闭前的提示   
  31.         }catch(e){}   
  32.     }  
  33.   
  34. <body onload="on_page_loaded()">  



或者简单些 

Java代码    收藏代码
  1. function ConfirmClose() {  
  2.         return "在关闭窗口前确认您是否已经保存了信息!";  
  3.     }  
  4.   
  5. function on_page_loaded()  
  6.     {  
  7.          try{  
  8.             if(!window.onbeforeunload)  
  9.                 window.onbeforeunload = function(){return ConfirmClose();};   //todo 增加了窗口关闭前的提示  
  10.         }catch(e){}  
  11.     }  
  12.   
  13.   
  14. <body onload="on_page_loaded()">  



但是页面刷新的时候也会调用的 


在搞这个的时候才发现body没有onclick事件,应该用document.onclick=function(){} 

你可能感兴趣的:(JavaScript)