onbeforeunload与a标签在IE中的冲突bug

 

onbeforeunload 是window的一个事件,目前Firefox,IE都支持,主要用来提示用户是否真的要离开该页面,通常在一些比较重要的数据提交之前,防止用户误操作导致数据丢失。典型的应用如gmail中,在写邮件的时候,如果刷新页面或者关闭页面,会出现提示。

但是在IE下点击一些a标签时,也会触发onbeforeunload事件。并且href中写javascript:void(0)也不行,而在Firefox中不会出现类似的情况。于是查资料对onbeforeunload事件重新认识了一下:

a标签触发事件的顺序

onclick、onbeforeunload跟href三者之间的先后运行关系是这样的:onclick > onbeforeunload > href,知道了这个道理,我们就可以通过一些方法阻止onbeforeunload。另外在IE浏览器中,假如href为#,那么也不会触发 onbeforeunload事件。

 

怎么阻止onbeforeunload

Ajax的同时,给a标签加上onclick事件,这样onclick在onbeforeunload之前运行,然后来个return false,就可以啦~

绕过onbeforeunload直接href

结合onclick事件,我们可以绕过onbeforeunload直接href,下面的代码就可以绕过onbeforeunload而执行href:

  1. var a=1;
  2. window.onbeforeunload=function()
  3. {
  4. if(a)alert("onbeforeunload事件爆发了!");
  5. }

只要我们在onclick事件加上一个a=0;就可以了~

实例

此处使用了window.onbeforeunload对onclick、onbeforeunload和href进行的测试,请在IE下进行测试:

转帖于:http://js8.in/558.html#

onbeforeunload与a标签在IE中的冲突bug(转载)的更多相关文章

  1. NX二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突【转载】

    文章出自https://blog.csdn.net/qq_41843732/article/details/91422764 在UG二次开发中,若使用MFC库,一旦加上#include<Afx. ...

  2. (在命名空间 public 中)存在冲突

    解决方案: http://www.wastedpotential.com/flash-as3-stop-using-automatically-declare-stage-instances/ 修复错 ...

  3. label标签使用过程中遇到的问题

    最近在做东西时候使用到了label标签,由于之前很少使用label标签,所以就遇到一个很奇怪的问题.什么问题呢?下面来看一个效果 <!DOCTYPE html> <html> ...

  4. 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证

    在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...

  5. CompareValues标签对Model中的属性进行验证

    在Asp.Net MVC中实现CompareValues标签对Model中的属性进行验证   在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现Model两个 ...

  6. Salesforce 自定义标签在代码中的应用

    自定义标签简介 Salesforce 中自定义标签(Custom Label)的作用是存储一般性的文本,可以用于 Apex.Visualforce 页面.Lightning 组件等地方,用于显示提示信 ...

  7. a标签在编辑器中可以整体删除并且a标签为不可编辑的情况下 标签依然存在(棒棒哒)

    a标签在编辑器中可以整体删除并且a标签为不可编辑的情况下 标签依然存在 因为给a标签的后面 添加了一个空元素,如<i></i>(棒棒哒)<div contentEdita ...

  8. 如何自定义JSTL标签与SpringMVC 标签的属性中套JSTL标签报错的解决方法

    如何自定义JSTL标签 1.创建一个类,从SimpleTagSupport继承 A) 通过继承可以获得当前JSP页面上的对象,如JspContext I) 实际上可以强转为PageContext II ...

  9. IE6中的常见BUG与相应的解决办法

    开发前端的同学一定都知道,IE6是兼容BUG最多的浏览器,它不支持PNG alpha通道暂且不论.其文档的解析理解规范也引起了诸多恼人的BUG,有时甚至让人感到绝望.本文主要讲解一些比较容易遇到的IE ...

随机推荐

  1. PHP学习过程_Symfony_(4)_命令创建实体_以及实体关系

    //项目运行php app/console server:run//创建实体php app/console doctrine:generate:entitybundle名称:实体名称例如:Symfon ...

  2. python流程控制:while循环

    python编程中whihe语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务. while循环语句格式: while <判断条件>: 执行语句 count ...

  3. swift 经典代码收集 和 赏析

    代码1:protocol PickableEnum { var displayName: String { get } var permanentID: String { get } static v ...

  4. mysql中datetime和timestamp的区别

    原文地址:http://database.51cto.com/art/200905/124240.htm 相同 显示 TIMESTAMP列的显示格式与DATETIME列相同.换句话说,显示宽度固定在1 ...

  5. window下安装apache---使用wamp

    01 wamp-server-wamp5-2-5-multi-win.exe 02 wamp报错时,需要的补丁(vcredist_x64.exe) 无法启动此程序,因为计算机中丢失MSVCR110.d ...

  6. @property、@synthesize和dynamic的用法

    原文:  http://blog.csdn.net/hherima/article/details/8622948 @代表“Objective-C”的标志,证明您正在使用Objective-C语言 O ...

  7. MocorDroid编译工程快速建立编译环境

    function sprdLunch(){    declare -a arrProj    arrProj=`find out/target/product -name previous_build ...

  8. 主机连不上虚拟机中的Redis的原因分析、以及虚拟机网络配置

    1. 网络最好是桥接方式.我之前用的是"网络地址转换(NAT)",导致虚拟机里用命令ifconfig得到的ip是10.0.2.15,好奇怪的感觉,然后在真实机上一直连不上.有的说用 ...

  9. STM32普通定时器(TIM2-7)的时钟源

    STM32普通定时器(TIM2-7)的时钟源

  10. jQuery(3)——DOM操作

    ---恢复内容开始---   jQuery中的DOM操作 [DOM操作分类] DOM操作分为DOM Core(核心).HTML-DOM和CSS-DOM三个方面. DOM Core:任何一种支持DOM的 ...