当前位置: 代码迷 >> JavaScript >> javascript的页面封锁和刷新事件
  详细解决方案

javascript的页面封锁和刷新事件

热度:648   发布时间:2012-09-10 22:20:12.0
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(){}?

  相关解决方案