博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
propertychange事件导致的IE浏览器堆栈溢出
阅读量:5052 次
发布时间:2019-06-12

本文共 657 字,大约阅读时间需要 2 分钟。

前段事件做项目,在IE下测试时,发现会报堆栈溢出的错误,其他浏览器正常,于是开始了苦逼的IE查错路程。。。

 

由于是在操作了某个输入框之后才出现的错误,所以把重点放到了input的相关事件,最终发现是这行代码导致:

$("#school").on("input propertychange",function () {    var t = $(this);    t.removeAttr("data-schoolid");})

 

一开始还没有领会过来,监控输入框的输入,怎么就导致堆栈溢出了,只到深入了解了input和propertychange事件。

input:HTML5标准事件,输入框文本监听;

propertychange:IE专属事件,顾名思义,属性改变事件,任何一个HTML属性改变都会触发,没错,问题就出在这里,在属性改变事件里面又改变了另一个属性(去掉data-schoolid属性),导致事情触发陷入死循环引发堆栈溢出!

解决:引入一个隐藏域,<input type="hidden" id="schoolData" />,在用户输入的时候动态改变隐藏域的属性值,而非输入框本身属性值,轻松解决!

反思:一般代码出现这种bug,无非这几种情况:1、思路不清晰,2、基础不扎实,3、考虑不周全,而这个错误的出现明显就是因为基础不扎实,在用到某个API的时候,要尽量多了解,知其然也要知其所以然!

转载于:https://www.cnblogs.com/xxyzjb/p/6971169.html

你可能感兴趣的文章
linux日常管理-系统进程查看工具-ps
查看>>
HandlerThread&Looper&MessageQueue
查看>>
ROM的一种写法
查看>>
VIM Taglist + ctags
查看>>
supervisord
查看>>
ubuntu10.04安装x264库
查看>>
●数组及应用举例
查看>>
__int128的实现
查看>>
R 读取clipboard内容 (MAC)
查看>>
Problem - 1118B - Codeforces(Tanya and Candies)
查看>>
jdk1.8 api 下载
查看>>
svn 图标不显示
查看>>
getElement的几中属性介绍
查看>>
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>
HTML列表,表格与媒体元素
查看>>
PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点?
查看>>
ionic android升级检查
查看>>
sld一张图
查看>>
树莓派连接wifi
查看>>