IE页面关闭时事件 Onunload与Onbeforeunload

本文探讨了页面打开和关闭事件的处理方法,包括onbeforeunload和onunload的使用,以及如何通过JavaScript和AJAX实现页面关闭事件的监听与服务器通信。重点介绍了防止用户在未完成操作的情况下意外离开网站的功能实现。

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

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

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

<html>
<head>
<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>    
</head>
<body> 
</body>
</html>


现在的需求是,我在线打开一个PDF文件进行编辑,然后在数据库中标志这个文件正在被编辑,不能再次被打开。于是我就想能不能捕捉页面打开事件和页面关闭事件,结果我试了N种方法,发现失败了,最后我找到了一段文字,我得改变思路才行了

asp.net 的页面的所有事件,都是在服务器端,页面还没有下载到客户端之前发生的,当HTML被下载到客户端浏览器呈现之后,不用js,不用ajax,在下次POSTBACK之前,,就跟服务器端没什么关系了。基本上说,asp.net无法直接捕获到页面关闭的事件。通过js可以在获取页面关闭时的事件,并通过ajax通知服务器。但是,这个操作并不能保证能按预想中的完成。另外一种常用的方式就是利用会话超时。如果你对时间精度要求比较高,可以自己设计一个会话超时控制方案,同时通过ajax来发送“心跳包”,当页面关闭后,服务器就会在指定的时间内收不到心跳包,以此来判断页面已被关闭,从而做相应的操作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值