今天在开发中发现,使用如下方式的链接。在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
如对本文有疑问, 点击进行留言回复!!
轻松解决 org.apache.taglibs.standard.tlv.JstlCoreTLV 困惑
vert实践五——Json?Protocol Buffer?FlatBuffers?
[基于tensorflow的人脸检测] 基于神经网络的人脸检测8——验证训练好的神经网络
selenium + ajax抓取英雄联盟全部英雄的详细信息及多线程保存全部皮肤图片到本地
网友评论