欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于火狐和IE下href="javascript:void(0)"兼容性的问题

程序员文章站 2024-01-07 21:11:28
今天在开发中发现,使用如下方式的链接。在Chrome中点击后行为符合预期,但在IE下会新开标签卡(根据参考资料,Firefox中有相同问题)。 经过排查,发现是href="javascript:void(0);"导致的问题,本来javascript:void(0);的用处是不用整体刷新网页且返回一个 ......

今天在开发中发现,使用如下方式的链接。在chrome中点击后行为符合预期,但在ie下会新开标签卡(根据参考资料,firefox中有相同问题)。 

经过排查,发现是href="javascript:void(0);"导致的问题,本来javascript:void(0);的用处是不用整体刷新网页且返回一个空值,但这儿由于dom本身的冒泡事件所以会最后执行href属性内的javascript:void(0);导致执行函数返回了一个空值,所以覆盖掉了前面正常执行函数所返回的值引起的错误。

一般情况下,ie会先运行dom本身绑定的事件,如onclick;如果没有阻止冒泡,则会顺序执行href属性。如果想正确运行,可以在前面用return false终止冒泡,例如:

<a target="_blank" class="prev"  onclick="return false;"   href="javascript:void(0);"></a>

或者直接删去也行,如:
<a target="_blank"  class="prev" ></a>

原因在于三款浏览器,对三个属性的处理顺序不同。

chrome顺序:onclick -> href -> target
ie和firefox顺序:onclick -> target -> href

上一篇:

下一篇: