window的onunload事件总结.

本文探讨了如何在JavaScript中仅当浏览器窗口关闭时精确触发onunload事件,而非在页面刷新或导航时触发。通过判断鼠标位置及键盘状态,实现了一个自定义函数session_end来准确控制该行为。

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

最近为Global.asax文件中的方法执行顺序和window的onunload事件的问题 郁闷了两天....现在懂得了,决心总结下来,怕以后忘掉.

因为在用户关闭浏览或转到新的一页或页面刷新时都会触发onunload这个事件

代码如下:<script lanagage="javascript">

    var oHttpReq=new ActiveXObject("MSXML2.XMLHTTP");

   oHttpReq.open("POST","EndSession.aspx?custid=",false);

   oHttpReq.send("");              

    </script>

但我只想在页面关闭时触发.解决如下:

if(document.body.clientWidth-event.clientX<170&&event.clinetY<0||event.altKey)

{关闭浏览器}else{页面转向,刷新,}

<body onunload="session_end()">

### 关于 `window.onload` 的相反事件JavaScript 中,`window.onload` 是一个用于检测页面所有内容(包括图像、样式表等)加载完成后的事件。与之相对的概念是页面卸载时触发的事件。通常,这种场景可以通过 `window.onunload` 或 `window.beforeunload` 事件来实现[^1]。 #### `window.onunload` `onunload` 事件会在用户离开当前页面时触发,例如关闭浏览器窗口、导航到其他页面或刷新页面。这个事件的主要用途是执行一些清理操作,如保存数据或释放资源。 ```javascript window.addEventListener('unload', function(event) { console.log('Page is unloading...'); }); ``` #### `window.beforeunload` `beforeunload` 事件类似于 `onunload`,但它提供了一个机会来询问用户是否真的要离开页面。通过设置 `event.returnValue`,可以显示一个确认对话框给用户。 ```javascript window.addEventListener('beforeunload', function(event) { event.preventDefault(); event.returnValue = ''; // Some browsers require a string to be set here. console.log('Are you sure you want to leave?'); }); ``` 需要注意的是,现代浏览器对 `beforeunload` 的支持有所限制,以避免滥用该功能干扰用户体验。例如,某些浏览器可能不会显示自定义消息,而只显示标准提示信息[^2]。 #### 其他相关事件 除了上述两个事件外,还有其他一些与页面生命周期相关的事件,例如: - `DOMContentLoaded`:当初始 HTML 文档被完全加载和解析完成后触发,无需等待样式表、图像等外部资源加载。 - `pageshow` 和 `pagehide`:分别在页面显示和隐藏时触发,适用于浏览器的前进/后退缓存机制。 ```javascript // 监听 pageshow 事件 window.addEventListener('pageshow', function(event) { console.log('Page is shown.'); }); // 监听 pagehide 事件 window.addEventListener('pagehide', function(event) { console.log('Page is hidden.'); }); ``` 这些事件可以用来更精细地控制页面的状态变化[^3]。 ### 总结 对于寻找 `window.onload` 的相反事件的需求,推荐使用 `window.onunload` 或 `window.beforeunload` 来处理页面卸载的情况。如果需要更复杂的页面状态管理,可以结合 `pageshow` 和 `pagehide` 等事件进行开发。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值