javascript的 页面关闭还是页面刷新

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

在javascript里定义一个函数即可
function  window.onbeforeunload()  {  alert("关闭窗口")} 

alert()事件将会在关闭窗口前执行,你也可以用户决定是否关闭窗口 

function  window.onbeforeunload()  {  
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
     window.event.returnValue="确定要退出本页吗?";  
} 


2.用onUnload方法

在body 标签里加入onUnload事件

body onUnload="myClose()" 


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

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

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


适用于firefox和ie的

function getEvent() //同时兼容ie和ff的写法, 这个方法是网上copy的  
    { 
        if(document.all)   return window.event; 
        func=getEvent.caller; 
        while(func!=null){ 
            var arg0=func.arguments[0]; 
            if(arg0) 
            { 
                if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)) 
                { 
                    return arg0; 
                } 
            } 
            func=func.caller; 
        } 
        return null; 
    } 

    function ConfirmClose() { 
        if(window.event) 
            window.event.returnValue = "在关闭窗口前确认您是否已经保存了信息!"; 
        else 
            getEvent().preventDefault();//for firefox 
    } 

    function on_page_loaded()   //自己定义的body的onload事件  
    { 
        try{ 
            if(!window.onbeforeunload )    //为了不覆盖原来的onbeforeunload方法,先判断 
                window.onbeforeunload = ConfirmClose;   //todo 增加了窗口关闭前的提示 
        }catch(e){} 
    }

<body onload="on_page_loaded()">


或者简单些

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

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


<body onload="on_page_loaded()">


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


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

你可能感兴趣的:(JavaScript,IE,firefox)