网页窗口关闭前进行提示(适用于IE和FF, 标题栏的X关闭按钮)

  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.     function ConfirmClose() {
  19.         if(window.event)
  20.             window.event.returnValue = "在关闭窗口前确认您是否已经保存了信息!";
  21.         else
  22.             getEvent().preventDefault();//for firefox
  23.     }
  24.     function on_page_loaded()   //自己定义的body的onload事件 
  25.     {
  26.         try{
  27.             if(!window.onbeforeunload )    //为了不覆盖原来的onbeforeunload方法,先判断
  28.                 window.onbeforeunload = ConfirmClose;   //todo 增加了窗口关闭前的提示
  29.         }catch(e){}
  30.     }

这个主要是在页面定义一个在关闭或更新页面文档文档前的事件(onbeforeunload 

兼容IE和FF,

重点: 

IE:event.returnValue如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle,可以取消发生事件的源元素的默认动作。

FF:e.preventDefault()方法作用跟上面一样 

 

说白了,利用这两个可以在事件发生前弹出提示框阻止事件和让事件继续进行,如onclick, onkeydown, onfocus, close 等事件

 

对于IE还可以用

function on_page_loaded(){
         try{

            if(!document.body.onbeforeunload ) 

                document.body.onbeforeunload =function(){ConfirmClose();};   //todo 增加了窗口关闭前的提示
        }catch(e){}

}

这个主要是document.body 和 window的区别, 上面这个方法在FF是不起作用的, 虽然定义了body的onbeforeunload 事件,但是没有效果。

 但你直接<body onbeforeunload = ConfirmClose();> 在 IE 和 FF 是可以的(很奇怪,希望有人能解释下)

PS. 不要把自定义的属性加到document对象上,这会使得每次读取该属性时进行额外的重算。推荐加在window对象上


 

查了一些资料发现原来还可以更简单的

function ConfirmClose() {
        return "在关闭窗口前确认您是否已经保存了信息!";
    }

function on_page_loaded()
    {
         try{
            if(!window.onbeforeunload)
                window.onbeforeunload = function(){return ConfirmClose();};   //todo 增加了窗口关闭前的提示
        }catch(e){}
    }

这个够简单了吧 

 

-------------------------------------------------

以上在IE6和firefox 2.0测试通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值