`
driftcloudy
  • 浏览: 132222 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

遭遇onbeforeunload

阅读更多

想用JS控制网页卸载确实是一件麻烦的事情。如果用了unload,那么很显然我们无法阻止网页的replace或者reload,因为 unload是在下一个网页到达client的时候被触发的,因此我只能选择用onbeforeunload。

 

onbeforeunload 被调用的时候,当前的页面尚未被unload,所以我们还能够来得及做一些事情。但是我最近也遇到了一些麻烦:onbeforeunload有时候会莫名 其妙的被执行两次。不管是IE还是FF都会出现这种现象。这是个极为隐蔽的问题,我费了好些力气才揪出了它。

 

究其原 因,是因为如果我们只剩最后一个标签页,那么关闭该标签页的时候,整个browser也会被关闭掉。如果恰好最后一个tab上跑的一段js中有 onbeforeunload事件的调用,这个onbeforeunload就会执行两次。注意:如果是刷新,则不会存在这个问题,因为browser不 会随之关闭。所以我猜测,浏览器的关闭过程中,当最后一个tab关闭时,onbeforeunload被调用一次,随即整个browser关闭,onbeforeunload 再次被调用。

 

当然还没有很好的解决方案。目前解决的思路如下:

 

var hasExecuted=false;			
function onBeforeUnloadHandler(event){
	if(this.hasExecuted==true){
		return;
	}				
	// TO-DO SOMETHING
	this.hasExecuted=true;				
}
分享到:
评论

相关推荐

    离开网页onbeforeunload事件在火狐的兼容并且提交不触发

    标题中的“离开网页onbeforeunload事件在火狐的兼容并且提交不触发”涉及到的是Web开发中的一个特定事件处理,即onbeforeunload。这个事件在用户尝试离开当前网页时触发,通常用于确认用户是否真的想要离开页面,...

    JS监听关闭浏览器事件之Onunload与Onbeforeunload

    本文将深入探讨两个关键的JavaScript事件:“onunload”和“onbeforeunload”,以及它们在实际应用中的差异和使用方法。 ### 一、`onbeforeunload`事件 `onbeforeunload`事件在页面即将卸载时触发,即当用户尝试...

    javascript Onunload与Onbeforeunload使用小结.docx

    ### JavaScript中的`onunload`与`onbeforeunload`事件详解 #### 一、概述 在JavaScript中,`onunload`和`onbeforeunload`是非常重要的两个事件,它们主要用于监听浏览器窗口关闭或者页面刷新的情况。这两种事件的...

    onbeforeunload与onunload事件异同点总结

    在JavaScript中,`onbeforeunload` 和 `onunload` 是两个重要的页面生命周期事件,它们用于在用户离开网页或页面更新时触发相应的处理程序。本文将详细介绍这两个事件的异同点,以及它们在实际应用中的使用场景和...

    关闭浏览器时提示onbeforeunload事件

    `onbeforeunload`事件是JavaScript中的一个非常重要的事件,它允许开发者在用户尝试离开当前页面时执行特定的操作,比如确认用户是否真的想要离开,或者在离开前保存未完成的数据。这个事件在用户关闭浏览器窗口、...

    用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)

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

    javascript Onunload与Onbeforeunload使用小结

    Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是...

    Onload,Onunload和onbeforeunload方法的异同

    在JavaScript的世界里,事件处理是网页交互的核心,而`onload`、`onunload`以及`onbeforeunload`就是三个与页面生命周期紧密相关的事件。理解它们的异同对于优化网页性能和提供更好的用户体验至关重要。 首先,`...

    浅谈javascript中onbeforeunload与onunload事件

    百度之,有onbeforeunload与onunload这两个事件,但是onbeforeunload在用户刷新的时候也会执行。搞得我弄的挺久的,所以想在这里做一个小小的总结 onbeforeunload与onunload事件 onbeforeunload定义和用法 ...

    基于JavaScript判断浏览器到底是关闭还是刷新(超准确)

    页面刷新时先执行onbeforeunload,然后onunload,最后onload。 经过验证我得出的结论是: //对于ie,谷歌,360: //页面加载时只执行onload //页面刷新时,刷新之前执行onbeforeunload事件,在新页面即将替换旧页面...

    使用onbeforeunload属性后的副作用

    这个功能其实很简单,就是通过处理window、body或frameset对象或元素的onbeforeunload事件实现的。 这个unbeforeunload的具体用法我就不说了,反正几乎能引起当前页面发生跳转的任何动作,都会触发这个事件。并且它...

    判断用户的在线状态 onbeforeunload事件

    获得用户登陆状态不用说...BODY onbeforeunload=”body_onUnload()”> [removed] [removed] = function() { if (window.event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey) { alert(“浏

    ember-onbeforeunload:在路线或关闭窗口之间转换时调用逻辑

    ember install ember-onbeforeunload用法首先,将ConfirmationMixin混合到您的Ember.Route 。 默认情况下,路由model hasDirtyAttributes ( )会在每次卸载前提示用户。 // app/routes/foo.jsimport Ember from '...

    网页页面加载动画(含有HTML字符实体+CSS动画animation+js事件onbeforeunload、onload).zip

    `onbeforeunload`事件在用户尝试离开页面(例如,通过点击链接、刷新或关闭窗口)时触发,可以用来暂停或清理加载动画,确保用户体验的一致性。而`onload`事件则在页面所有资源(包括图片、脚本等)完全加载完毕后...

    liukexina#weekly#2021-15周-onbeforeunload使用踩坑1

    引言项目开发需要关闭标签页时,弹窗提示用户【数据将不被保存,是否继续操作】实现该功能,则需要监听浏览器是否关闭下面来学习涉及到浏览器关闭的两个方法onbefor

    捕捉IFrame SRC改变事件

    一种常见的方法是利用`window.onbeforeunload`事件。这个事件会在浏览器窗口、标签页或框架即将卸载前触发。它通常用于警告用户他们正在进行的操作可能会导致数据丢失,但在这里我们可以利用它来监测`<iframe>`中...

Global site tag (gtag.js) - Google Analytics