domino中页面刷新和关闭事件(js)的捕捉(onbeforeunload方法)

本文介绍了一种使用JavaScript监测页面关闭与刷新的方法,并通过onbeforeunload和onload事件组合来区分不同用户行为,实现记录用户注销时间等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目原来有一个功能,用户点击退出时会记录用户的注销情况,但是如果用户使用各种方法关闭浏览器的话就没有办法捕捉。为了实现这个功能,我从网上找了很多资料,不过都没有实现,最后用了一个折中的办法实现。

既然要用js来捕捉用户刷新和关闭的事件,自然是要用到onunload或者onbeforeunload,这两者的区别网上有很多,就不多累述了。无论哪种方法要实现上面的功能都不行,因为对于浏览器来说,刷新和关闭都是结束当前的会话,都会执行后面的代码。

   后来想到可以利用onunload、onbeforeunload和onload的执行情况。(上面的功能只用onbeforeunload和onload

1、当我们加载页面的时候只会执行onload。

      2、当我们刷新页面的时候会首先执行onbeforeunload,然后执行onload。

3、当我们关闭页面的时候只会执行onbeforeunload。

    知道这一点就方便多了,具体代码如下。

window.onbeforeunload =function(){
//无论用户刷新还是删除这段代码都会执行,记录用户的注销时间等信息
 var XMLRole=new XMLHttpObject("GET","/文件名/数据库名.nsf/记录注销时间代理名?openagent&key="+Math.random(),false,'')
    XMLRole.sendData();  
    var XmlResponse = XMLRole.getText();
}

//如果用户是刷新,后面这段代码会执行,从而清除注销时间等信息(如果关闭则不会执行)
   var XMLRole=new XMLHttpObject("GET","/文件名/数据库名.nsf/删除注销时间代理名?openagent&key="+Math.random(),false,'')
    XMLRole.sendData();  
    var XmlResponse = XMLRole.getText();

//后面省略AJAX的XMLHttpObject函数,具体函数在http://blog.youkuaiyun.com/liuchang__/article/details/50317069中。

这样就实现了上面说到的功能,经过测试IE11上没有问题,其它浏览器还需要测试。

后面也将网上找到的方法记录一下吧,很多代码有借鉴之处的。

1、这种是网上找到最多的方法。

window.onunload = function(){        
        var a_n = window.event.screenX - window.screenLeft;        
        var a_b = a_n > document.documentElement.scrollWidth-20;       
        if(a_b && window.event.clientY< 0 || window.event.altKey){        
                  alert('关闭页面行为'); 
        }else{ 
                  alert('跳转或者刷新页面行为');      
            } 
}

2、还有这种方法。

<script language="javascript">
<!-- 
var s="close";
function window.onunload(){
   if(s=="fresh")
      if(window.screenLeft>10000){alert('关闭');}else{alert('刷新');}
   else
      alert('关闭');
}
function window.onbeforeunload(){
   s="fresh";
}</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值