`
张玉龙
  • 浏览: 740633 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

火狐 捕获浏览器关闭、刷新事件 并进行处理

 
阅读更多

<script language="JavaScript" type="text/javascript">
window.onbeforeunload = CloseEvent;
var DispClose = true;
function CloseEvent()
{
	if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
    if (DispClose)
    {
        return "是否离开当前页面?";
    }
	}
}
window.onunload= UnLoadEvent; 
function UnLoadEvent()
{if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
    DispClose = false;
    //在这里处理关闭页面前的动作
    window.close();
}
}


</script>
如果是其他页面离开的话就不做上面的 window.close处理
	只要将 onunload 设为null 就可以了 window.onunload= null; 




function submittest(){
//	var pfv = parseInt($("#pf").html());
	var pfv = 5;
	if(rms < pfv){
		$("#dialog-time").html("考试时间不足"+pfv+"秒,不能交卷!");
		$("#dialog-time").dialog("open");
	}else{
		var qf = parseInt($("#qf").html());
		if(qf>0 && parseInt(lms)){
			window.onunload= null; 
			$("#dialog-confirm").html("您还有"+qf+"道试题未做,是否继续交卷!");
			$("#dialog-confirm").dialog("open");
		}else{
			return submital();
		}		
	}
}



以下是我看到的文章












在做一些关于会员在线的问题时,往往我们要根据览器是否关闭来判断用户是否下线,然后再从session和application中将此用户移除。
由于浏览器是无状态的,在这时候捕捉浏览器关闭会出现两种情况:
1.真正的关闭浏览器 (a.点击关闭按钮 b.右击任务栏关闭 c.按alt+F4关闭)
2.刷新浏览器。
那如何判断区分这两种动作呢?

一. Javascript代码处理方法:

     function window.onbeforeunload()  
     {       
        //用户点击浏览器右上角关闭按钮或是按alt+F4关闭
        if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)  
        {  
         // alert("点关闭按钮");
               document.getElementById("hiddenForm:hiddenBtn").click();
            // window.event.returnValue="确定要退出本页吗?";  
        }
        //用户点击任务栏,右键关闭。s或是按alt+F4关闭
        else if(event.clientY > document.body.clientHeight || event.altKey)
        {
            // alert("任务栏右击关闭");
               document.getElementById("hiddenForm:hiddenBtn").click();
            // window.event.returnValue="确定要退出本页吗?";  
        }
        //其他情况为刷新  
        else
        {  
            // alert("刷新页面");
        }  
     }

其中 event.clientX                             鼠标光标X坐标    
        document.body.clientWidth     窗体工作区宽度  
        event.clientY                              鼠标光标Y坐标  
        event.altKey                               是否按下alt键


二. 事件捕捉方法:


<body scroll="no" onbeforeunload="return CloseEvent();" onunload="UnLoadEvent()" >
</body>

<script language="JavaScript" type="text/javascript">
  
    var DispClose = true;
    function CloseEvent()
    {
        if (DispClose)
        {
            return "是否离开当前页面?";
        }
    }
   
    function UnLoadEvent()
    {
        DispClose = false;
        //在这里处理关闭页面前的动作
    }


在页面卸载之前引发onbeforeunload事件,如果用户选择“是”即确定卸载页面将引发onunload事件,否则返回页面不做任何操作。








分享到:
评论
1 楼 明月清风 2013-01-22  
不管用呀,event.clientX undefined

相关推荐

    判断浏览器是刷新还是关闭窗口

    ### 判断浏览器是刷新还是关闭窗口 在网页开发过程中,我们常常希望能在用户退出或离开当前页面时执行一些特定的操作,比如保存用户的状态、显示一个警告框等。为此,JavaScript 提供了 `onunload` 事件,它会在...

    FirefoxF5刷新事件

    通过以上代码及解析,我们可以看出,为了在Firefox浏览器中解决F5刷新事件获取不到`event`对象的问题,开发者采用了一系列的技巧和技术,包括兼容不同浏览器的事件处理机制、定义自定义事件处理函数以及通过调用栈...

    vuejs中监听窗口关闭和窗口刷新事件的方法

    这段代码中,`e.returnValue`用于设置旧版浏览器(如IE8和Firefox 4之前)的提示信息,而返回的字符串在Chrome、Safari、Firefox 4+、Opera 12+以及IE 9+等现代浏览器中会被用来显示一个确认对话框。 然而,为了更...

    firefox firebug js错误

    总之,处理"Firefox Firebug JS错误"需要了解JavaScript的基础知识,熟悉Firebug的使用,以及对浏览器兼容性的理解。同时,保持软件更新和使用良好的编程实践也是避免错误的关键。当遇到问题时,不要害怕使用调试...

    C#多标签浏览器

    【C#多标签浏览器】是一种基于C#编程语言开发的桌面应用程序,其核心特性在于它实现了多标签的浏览模式,类似于我们常见的网络浏览器,如Chrome或Firefox。在这款自定义的浏览器中,用户可以在同一个窗口内打开多个...

    fiddlerfox:如果在Fiddler启动后不刷新Firefox代理设置,则可以将Firefox指向您的Fiddler实例

    提琴手 此Firefox扩展允许您从Firefox中启用Fiddler代理。 因为Firefox使用自己的... 在开发此扩展之前,您需要弄乱Firefox菜单中深藏的代理设置,或者重新启动浏览器,这在开发过程中非常烦人,同时打开了许多选项卡和

    易语言多页面浏览器源码.zip易语言项目例子源码下载

    多页面浏览器通常指的是可以在同一窗口内打开多个网页的浏览器,如我们常见的谷歌Chrome、火狐Firefox等。其主要组成部分包括:界面控件、网络请求模块、页面渲染引擎以及用户交互处理等。在易语言中,实现这些功能...

    ajax无刷新分页

    - **兼容性**:确保代码兼容各种主流浏览器,包括IE、Firefox、Chrome、Safari和Opera等。 - **用户体验**:在Ajax请求期间,可以显示加载指示器,让用户知道页面正在加载。 - **SEO**:由于Ajax加载的内容对搜索...

    实现浏览器无刷性长连接的htmlfile实现

    由于这是一个IE特有功能,它不适用于其他浏览器,如Firefox、Chrome或Safari。HTMLFile对象通常通过JavaScript进行操作,可以用于实现文件上传、下载以及在客户端和服务器间进行数据交换,为创建实时的Web应用程序...

    firefox-instasaver:Firefox 的 Instasaver 插件

    Firefox的Instasaver插件是一款专为Firefox浏览器设计的扩展,旨在为用户提供类似于Instapaper的服务,方便用户保存网页以供离线阅读。这款插件是JavaScript技术的产物,利用了Firefox扩展开发中的核心特性,使得...

    jPagerBar的ASP.NET无刷新分页示例程序

    3. **兼容性广泛**:与多种浏览器兼容,包括Chrome、Firefox、Safari、Edge和Internet Explorer等。 4. **易于使用**:提供简单易懂的API,使开发者能快速上手。 **二、ASP.NET无刷新分页实现** 实现ASP.NET无刷新...

    ext-basex.js 进行Ext.Ajax.request 同步请求 FF无法正常

    2. 检查请求的错误状态并进行相应的错误处理。 3. 如果可能,考虑使用Web Workers或者Service Worker来执行同步操作,以避免阻塞主线程。 `ext-basex.js`文件可能包含了上述方法的实现,或者它可能提供了一种特殊的...

    input 输入框内的输入事件详细分析

    IE浏览器使用`onpropertychange`事件来捕获输入框内容的变化,而在其他现代浏览器如Chrome、Firefox和Opera中,我们通常使用`input`事件进行监听。这两种事件各有其特点和适用范围,理解它们的工作机制对于优化跨...

    一个基于ASP.NET 的js客户端处理技术JavaScript Tips 之一

    10. **调试技巧**:学会使用浏览器的开发者工具(如Chrome DevTools或Firefox Developer Tools)进行JavaScript调试,可以帮助快速定位和解决问题。 以上只是基于ASP.NET的JavaScript客户端处理技术的一部分,实际...

    Ajax完全自学手册(PPT)

    Test Firefox XMl DOm.htm Firefox中的XML DOM支持 Firefox LoadXML.htm Firefox中的XML DOM支持 XPath Example1.xml XPath Writer.xml 开发中实际使用的XML文档 Test4IE XPath.htm IE中的XPath支持 Test ...

    izzyftp:用于Firefox OS的Light FTP客户端

    izzyftp是一款专为Firefox OS设计的轻量级FTP客户端,它允许用户在Firefox OS设备上方便地进行文件传输,提供了简单易用的界面和基本的FTP功能。这款应用的诞生,使得Firefox OS用户也能享受到便捷的FTP服务,极大地...

    wikipedia-context-menu-search:Firefox插件可通过上下文菜单在Wikipedia上搜索突出显示的文本

    在Firefox插件开发中,JavaScript被用来增加浏览器的功能,比如在本例中,它可能用于监听用户的鼠标选择事件,捕获选中的文本,并在用户点击上下文菜单的特定项时,启动一个到维基百科的搜索请求。 JavaScript在...

    AJAX的,站内聊天室代码

    jQuery致力于提供跨浏览器的解决方案,确保代码在Firefox、Chrome、Safari、Internet Explorer以及Edge等主流浏览器上都能正常运行。在聊天室应用中,这意味着无论用户使用哪种浏览器,都可以顺畅地参与聊天,提高了...

    网页文字无法复制-看这里.docx

    9. **使用Mathox或Firefox浏览器**:Mathox可能需要安装插件,Firefox浏览器通常可以直接选择复制网页内容,这是因为它们对复制保护的处理方式与IE不同。 以上方法并不能保证在所有情况下都能成功复制网页文字,...

    AJAX在不同浏览器中XMLHttpRequest对象的生成示例

    而在其他大部分现代浏览器中,如Firefox、Opera 8.0+和Safari,可以直接使用XMLHttpRequest构造函数来创建对象。但为了兼容性考虑,通常需要编写能够判断浏览器类型的兼容代码。 根据文章提供的代码示例,我们可以...

Global site tag (gtag.js) - Google Analytics