美文网首页diboot
由a标签点击事件引发的IE8翻车事故

由a标签点击事件引发的IE8翻车事故

作者: 一个鸡蛋壳儿 | 来源:发表于2019-06-14 13:48 被阅读0次

起因

对于a标签的点击事件,也许我们早已习惯href="javascript:void(0);"这样去写,之后绑定click事件来处理,但今天在IE8浏览器下某个页面遇到了很诡异的问题。如果我们点击了某个这个a标签,JavaScript中的点击事件执行之后,页面中的input使用$('input').val()等就取不到值了,使用$('form').serialize()之后相关input的字段也没有值。由此展开了折腾之路。

折腾之路

  1. 使用各种方式取值,都没有获取到input输入框的值,一直以为是取值方式的问题,一直折腾无果,因为在其他浏览器下均正常。
  2. 如果不点击相关a标签,则可以获取到input输入框的值。
  3. 在另外的具有placeholder处理的页面中,点击a标签后,input中的placeholder值没有了,因为IE8下的placeholder需要绑定相关事件,因此可以断定点击a标签之后,页面可能存在刷新。
  4. 果不其然,a标签的href属性即便写为javascript:void(0);仍然会导致页面在IE8下进行某种机制的页面刷新操作。

解决方案

在每一个这种a标签的点击事件中,添加e.preventDefault()来阻止默认事件即可。

潜在风险

在添加这行代码之后,对于想跳转的有些a标签可能不能跳转了,那么需要再在事件下面对href进行判断,或者判断这个href是否符合直接跳转的条件,而分别进行阻止默认事件的处理。


Diboot - 简单高效的轻代码开发框架

相关文章

  • 由a标签点击事件引发的IE8翻车事故

    起因 对于a标签的点击事件,也许我们早已习惯href="javascript:void(0);"这样去写,之后绑定...

  • 点击a标签触发点击事件后下载文件

    a标签 a标签下载文件 点击下载 添加点击事件 点击下载 因为 点击事件先于href执行 当点击事件返回true时...

  • Vue阻止冒泡点击事件

    当我们在父标签定义了点击事件,在子标签定义的也有点击事件,那么点击字标签的时候就会触发父标签的点击时间和子标签的事...

  • js中阻止事件冒泡行为

    场景:如demo所示,父标签div有个点击事件,其子标签span也有一个点击事件。 当点击父标签时,弹出提示框,没...

  • ng-repeat与ng-model的简单搭配使用

    目标实现:通过点击 标签的点击事件改变 标签的内容 {{myText}} {{x}} var myApp = an...

  • 阻止事件冒泡

    【场景:在list-item中有个a标签,此刻想点击执行a事件,但会执行list-item的点击事件】 在a标签点...

  • 翻车事故

    翻车是一瞬间的事,从感觉不妙到悬在半空,也就不超过1秒钟。 一秒钟,咔嚓一声很短,当时却感到挺长,长到还有时间仰起...

  • a标签中的点击事件

    我们常用的在a标签中有点击事件:### 1.a href="[JavaScript](http://lib.csd...

  • JSdeep(this&arguments&bi

    call 浏览器在执行点击事件时,默认点击事件函数的call参数为,引发点击事件的元素(button,div) f...

  • 由毕业留言引发的事故

    六年级的孩子,马上毕业了,相互写留言是既开心又难过的。 这个孩子在最想做的一件事那栏如实写下了自己的心里话:我最想...

网友评论

    本文标题:由a标签点击事件引发的IE8翻车事故

    本文链接:https://www.haomeiwen.com/subject/duosfctx.html