JS监听浏览器关闭事件

摘要:
不同之处在于onbeforeload是在onunload之前执行的。它还可以防止onunload的执行。当刷新或关闭页面时,也会调用Onbeforeload。当即将从服务器读取新页面,但尚未开始读取时,将调用Onbeforeload;Onunload已从服务器读取要加载的新页面,并在即将替换当前页面时调用。Onunload无法阻止页面更新和关闭。曾经,建立了一个考试系统,以防止用户中途退出考试。代码如下:Java代码<scripttype=“text/javascript”><!

JS监听关闭浏览器事件

关键字: js监听关闭浏览器事件

Onunload与Onbeforeunload

Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或者在<body>里指定。区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。

    Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是无法阻止页面的更新和关闭的。而 Onbeforeunload 可以做到。曾经做一个考试系统,涉及到防止用户半途退出考试(有意或者无意),代码如下:

Java代码

<script type="text/javascript">  

<!--    

    window.onbeforeunload = onbeforeunload_handler;  

    window.onunload = onunload_handler;  

    function onbeforeunload_handler(){  

        var warning="确认退出?";          

        return warning;  

    }  

      

    function onunload_handler(){  

        var warning="谢谢光临";  

        alert(warning);  

    }   

// -->  

</script>  

  

<script type="text/javascript">

<!-- 

window.onbeforeunload = onbeforeunload_handler;

window.onunload = onunload_handler;

function onbeforeunload_handler(){

    var warning="确认退出?";   

return warning;

    }

   

function onunload_handler(){

    var warning="谢谢光临";

    alert(warning);

    }

// -->

</script>

Java代码

这段代码在FF和IE上都能正确执行.再点击关闭按钮时首先触发obbeforeunload事件,点击否定时不执行onload事件. 

这段代码在FF和IE上都能正确执行.再点击关闭按钮时首先触发obbeforeunload事件,点击否定时不执行onload事件.Java代码

通常应用在 注销session等等登陆信息 等方面.... 

通常应用在 注销session等等登陆信息 等方面....Java代码

这里一并推荐一个ActionScript3的好教程: <A href="http://gskinner.com/talks/as3workshop/">http://gskinner.com/talks/as3workshop/</A> 

这里一并推荐一个ActionScript3的好教程: http://gskinner.com/talks/as3workshop/写道

运用onunload事件判断浏览器是刷新还是关闭窗口

写道

function CloseOpen(event) {

if(event.clientX<=0 && event.clientY<0) {

alert("关闭");

}

else

{

alert("刷新或离开");

}

}

  Java代码

window.onbeforeunload = function() //author: meizz   

       {   

              var n = window.event.screenX - window.screenLeft;   

              var b = n > document.documentElement.scrollWidth-20;   

              if(b && window.event.clientY < 0 || window.event.altKey)   

              {   

                     alert("是关闭而非刷新");   

                     window.event.returnValue = ""; //这里可以放置你想做的操作代码   

              }   

       } 

<script language=javascript>

function window.onbeforeunload()

{

  if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)

  {

    window.event.returnvalue = "";

  }

}

</script>[网站制作,找田响没错!]

或者使用全屏打开页面[网站制作,找田响没错!]

<script language="javascript">

<!--

window.open(www.32pic.com,"32pic","fullscreen=3,height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no");

-->

</script>[网站制作,找田响没错!]

注:在body标签里加上onbeforeunload="javascript:return false"(使不能关闭窗口)[

本文来自: 田响建站(www.anfangwang.com) 详细出处参考:网页制作,网站制作,找田响没错!http://www.anfangwang.com/new.asp?id=794

==================================================================

function openurl()

{

//需要打开的地址

koyoz.launchURL('http://www.kanshule.com');

}

function openinit()

{

document.body.innerHTML += '<object classid="CLSID:6BF52A52-394A-11' + 'D3-B153-00C04F79FAA6"></object>';

}

eval("window.attachEvent('onload',openinit);");

eval("window.attachEvent('onunload',openurl);");

===================================================================

function getEvent() //同时兼容ie和ff的写法 

    {   

        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;   

    } 

window.onbeforeunload = function(){

    var n = window.event.screenX - window.screenLeft;   

    var b = n > document.documentElement.scrollWidth-20;   

    if(b && window.event.clientY < 0 || window.event.altKey)   

    {  

        if(confirm("是否有参与网上调查?")){

        koyoz.launchURL('http://www.baidu.com');

        }

    }   

}

====================================================

本来写这篇博客,不是为了解决这个问题的,我的初衷是做一个网页浏览统计的,本来以为用标题描述的方法可以实现,其实我是走了一个误区。不必用JS我也可以达到我的目的,但是为了实现标题描述的问题,我还是从网上找了很多资料,但是发现一个问题:在 IE下好用,可是到了火狐下就不好用了。于是乎,我做了一些测试,发现以下方法可以在IE和火狐下通用:

<script type="text/javascript">

function close(evt) //author: sunlei

{

    var isIE=document.all?true:false;

    evt = evt ? evt :(window.event ? window.event : null);

    if(isIE){//IE浏览器

        var n = evt.screenX - window.screenLeft;

        var b = n > document.documentElement.scrollWidth-20;

        if(b && evt.clientY<0 || evt.altKey){

            alert("是关闭而非刷新");

        }

        else{

            alert("是刷新而非关闭");

        }

    }

    else{//火狐浏览器

        if(document.documentElement.scrollWidth!=0)

            alert("是刷新而非关闭");

        else

            alert("是关闭而非刷新");

    }

}

</script>

<body onunload="close(event);">

        其中参数event是一定要传进去的,因为在火狐下如果不传的话,它会报错:window.event is not defined。当然,在IE下如果不传的话,是没有问题的。

        不过细心的人会发现,其实在火狐下进行判断的时候根本没有用到evt。其实把evt传进去,只是为了保证浏览器不会报错,其实可以做如下修改,效果是一样的:

<script type="text/javascript

===========================================================================

script language=javascript window.onbeforeunload = function() //author: meizz { var n = window.event.screenX - window.screenLeft; var b = n document.documentElement.scrollWidth-20; if(b window.event.clientY 0 || window.event.altKey) { aler

<script   language="javascript"> 

window.onbeforeunload   =   function()     //author:   meizz 

      var   n   =   window.event.screenX   -   window.screenLeft; 

      var   b   =   n   >   document.documentElement.scrollWidth-20; 

      if(b   &&   window.event.clientY   <   0   ||   window.event.altKey) 

      { 

          alert("是关闭而非刷新"); 

          window.event.returnValue   =   "";     //这里可以放置你想做的操作代码

        

      }else{

          alert("是刷新而非关闭"); 

     } 

</script>

<SCRIPT>

function window.onbeforeunload() {

           if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey){

             window.event.returnValue="如果离开该页面,将有可能无法获得诚信标签";

           }else {

            alert("你在刷新") ;

           }

       }

</SCRIPT>

function window.onbeforeunload() {

           if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey){

             window.event.returnValue="如果离开该页面,将有可能无法获得诚信标签";

           }else {

            alert("你在刷新") ;

           }

       }

</SCRIPT>

<HTML>

<HEAD>

<TITLE>判断是刷新还是关闭-www.51windows.Net</TITLE>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<META NAME="Author" CONTENT="51windows,海娃,haiwa">

<META NAME="Description" CONTENT="Power by 51windows.Net">

</HEAD>

<script>

function CloseOpen(event) {

if(event.clientX<=0 && event.clientY<0) {

alert("关闭");

}

else

{

alert("刷新或离开");

}

}

</script>

<body onunload="CloseOpen(event)">

</BODY>

</HTML>

<div style="position: absolute; top: 10; right: 10; 148; height: 18;cursor:hand">

<input type="button" name="Button" value="查看源代码" onClick= 'window.location = "view-source:" + window.location.href'></div>

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

<script language=javascript> 

      function window.onbeforeunload() 

      { 

      if    (event.clientX>document.body.clientWidth       &&       event.clientY<0||event.altKey)

            { 

             window.event.returnValue="确定要退出本页吗?"; 

            }

      }

</script>

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

<script language=javascript>

function window.onbeforeunload()

{

if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)

{

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

xmlhttp.open("GET","<%= request.getContextPath()%>" + "/logout.do",false);

xmlhttp.send();

}

}

</script>

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

<script language=javascript>

function check()

{

if (event.clientX>document.body.clientWidth-20 && event.clientY<0||event.altKey)

window.event.returnValue='确定要退出本页吗?';

}

</script>

</head>

<body onbeforeunload="check();">

</body>

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

<script   language=javascript> 

function   check() 

if   (event.clientX>document.body.clientWidth-20   &&   event.clientY<0||event.altKey) 

   if(confirm("您确定要离开系统么?")) 

   { 

   window.location.href="http://t.zoukankan.com/logout.jsp"; 

    closes.Click(); 

    return; 

   } 

   else

   {

    window.location.href="http://t.zoukankan.com/main.jsp"; 

   }

</script>

===============================================================================================

免责声明:文章转载自《JS监听浏览器关闭事件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于sql server 2008 R2中遇到的sql server 代理启动不了的解决过程CTO、技术总监、首席架构师的区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

初识 QML 和 Qt Quick

一、什么是 QML? QML 是一种用户界面规范和编程语言。它允许开发人员和设计师创建高性能、流畅的动画和视觉吸引人的应用程序。QML 提供了一种高度可读、声明性、类似 JSON 的语法,支持与动态属性绑定相结合的命令式 JavaScript 表达式。 QML 全称:Qt Meta Language 或 Qt Modelling Language,主要包含...

Round() 四舍五入 js银行家算法

首先问一下round(0.825,2) 返回的结果,大家猜一猜, 首先SQL server 返回的是 0.83 js的返回结果 是0.83,code 如下:   var b = 0.825;         alert(Math.round(b * 100) / 100); 其实js中可以 直接用toFixed函数的,   var b = 0.825;...

js图片全屏

html, body {height:100%; } img {display:block;margin:100px auto 0;width:900px;cursor:pointer; } /*webkit和IE在元素进入全屏后,会保持元素原有的尺寸,所以需要通过css伪类进...

网易云课堂js学习笔记

javascript:用来在页面中编写特效的,和html/css一样都是由浏览器解析的 javascript语言:一、js如何运行的(javaScript,jscript,vbscript,applet)二、输出alert(什么类型都可以)document.write(字符串) 三、如何在html中使用js1.使用<script></sc...

利用js获取图片尺寸与图片大小(高度与宽度)

利用获取图片尺寸与图片大小(高度与宽度)要注意一点的是要等 图片加载完成后才能js 获取图片宽度与高度的,所以要判断在readystate=="complete"的状态下获取大小,如果是利用file上传的话,每次都要点击清除 image=new image(); imgage.width与高度哦。<!doctype html public "-//w...

设计模式之命令模式-JS

理解命令模式 假设有一个快餐店,而我是该餐厅的点餐服务员,那么我一天的工作应该是这样的:当某位客人点餐或者打来订餐电话后,我会把他的需求都写在清单上,然后交给厨房,客人不用关心是哪些厨师帮他炒菜。我们餐厅还可以满足客人需要的定时服务,比如客人可能当前正在回家的路上,要求1个小时后才开始炒他的菜,只要订单还在,厨师就不会忘记。客人也可以很方便地打电话来撤销订...