想用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事件在火狐的兼容并且提交不触发”涉及到的是Web开发中的一个特定事件处理,即onbeforeunload。这个事件在用户尝试离开当前网页时触发,通常用于确认用户是否真的想要离开页面,...
本文将深入探讨两个关键的JavaScript事件:“onunload”和“onbeforeunload”,以及它们在实际应用中的差异和使用方法。 ### 一、`onbeforeunload`事件 `onbeforeunload`事件在页面即将卸载时触发,即当用户尝试...
### JavaScript中的`onunload`与`onbeforeunload`事件详解 #### 一、概述 在JavaScript中,`onunload`和`onbeforeunload`是非常重要的两个事件,它们主要用于监听浏览器窗口关闭或者页面刷新的情况。这两种事件的...
在JavaScript中,`onbeforeunload` 和 `onunload` 是两个重要的页面生命周期事件,它们用于在用户离开网页或页面更新时触发相应的处理程序。本文将详细介绍这两个事件的异同点,以及它们在实际应用中的使用场景和...
`onbeforeunload`事件是JavaScript中的一个非常重要的事件,它允许开发者在用户尝试离开当前页面时执行特定的操作,比如确认用户是否真的想要离开,或者在离开前保存未完成的数据。这个事件在用户关闭浏览器窗口、...
Onunload,onbeforeunload都是在刷新或关闭时调用,可以在[removed]脚本中通过[removed]来指定或者在<body>里指定。区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。 Onbeforeunload...
Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是...
在JavaScript的世界里,事件处理是网页交互的核心,而`onload`、`onunload`以及`onbeforeunload`就是三个与页面生命周期紧密相关的事件。理解它们的异同对于优化网页性能和提供更好的用户体验至关重要。 首先,`...
百度之,有onbeforeunload与onunload这两个事件,但是onbeforeunload在用户刷新的时候也会执行。搞得我弄的挺久的,所以想在这里做一个小小的总结 onbeforeunload与onunload事件 onbeforeunload定义和用法 ...
页面刷新时先执行onbeforeunload,然后onunload,最后onload。 经过验证我得出的结论是: //对于ie,谷歌,360: //页面加载时只执行onload //页面刷新时,刷新之前执行onbeforeunload事件,在新页面即将替换旧页面...
这个功能其实很简单,就是通过处理window、body或frameset对象或元素的onbeforeunload事件实现的。 这个unbeforeunload的具体用法我就不说了,反正几乎能引起当前页面发生跳转的任何动作,都会触发这个事件。并且它...
获得用户登陆状态不用说...BODY onbeforeunload=”body_onUnload()”> [removed] [removed] = function() { if (window.event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey) { alert(“浏
ember install ember-onbeforeunload用法首先,将ConfirmationMixin混合到您的Ember.Route 。 默认情况下,路由model hasDirtyAttributes ( )会在每次卸载前提示用户。 // app/routes/foo.jsimport Ember from '...
`onbeforeunload`事件在用户尝试离开页面(例如,通过点击链接、刷新或关闭窗口)时触发,可以用来暂停或清理加载动画,确保用户体验的一致性。而`onload`事件则在页面所有资源(包括图片、脚本等)完全加载完毕后...
引言项目开发需要关闭标签页时,弹窗提示用户【数据将不被保存,是否继续操作】实现该功能,则需要监听浏览器是否关闭下面来学习涉及到浏览器关闭的两个方法onbefor
一种常见的方法是利用`window.onbeforeunload`事件。这个事件会在浏览器窗口、标签页或框架即将卸载前触发。它通常用于警告用户他们正在进行的操作可能会导致数据丢失,但在这里我们可以利用它来监测`<iframe>`中...