propertychange事件导致的IE浏览器堆栈溢出
前段事件做项目,在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的时候,要尽量多了解,知其然也要知其所以然!
propertychange事件导致的IE浏览器堆栈溢出的更多相关文章
- 关于dom节点绑定滑动事件导致浏览器上下滑动失效解决方案--黄丕巧
		
1.移动端开发往往需要添加一下自定义的左右滑动事件,但是添加了左右滑动事件之后就要阻止浏览器大默认事件,否则dom节点的滑动事件和浏览器本身的滑动会出现冲突,导致滑动的时候会出现消失瞬间再出现的效果 ...
 - 如何解决js递归里面出现的堆栈溢出
		
16.下面的递归代码在数组列表偏大的情况下会导致堆栈溢出.在保留递归模式的基础上,你怎么解决这个问题? var list = readHugeList(); var nextListItem = fu ...
 - STM32/GD32上内存堆栈溢出探测研究
		
无数次遭受堆栈溢出折磨,随着系统变得复杂,故障点越来越难以查找!主要溢出情况如下:1,一般RAM最后两块空间是堆Heap和栈Stack,堆从下往上用,栈从上往下用,任意一个用完,都会进入对方的空间2, ...
 - javaScript事件机制深入学习(事件冒泡,事件捕获,事件绑定方式,移除事件方式,阻止浏览器默认行为,事件委托,模拟浏览器事件,自定义事件)
		
前言 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间.可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码.这种在传统软 ...
 - IE11下javascript报堆栈溢出问题的解决
		
在IE11浏览器下,使用日期函数里面的toLocaleDateString()会报堆栈溢出 不知道是不是跟我的其他相关代码有关,还是就是这个toLocaleDateString()在IE11确实不太一 ...
 - json传值给前端页面,出现堆栈溢出问题
		
用的com.alibaba.fastjson.JSONObject这个包 原因:JSONObject将对象转json字符串时候没有关闭循环引用导致的堆栈溢出. 解决办法是 使用这个 JSONObjec ...
 - 前端知识体系:JavaScript基础-作用域和闭包-闭包的实现原理和作用以及堆栈溢出和内存泄漏原理和相应解决办法
		
闭包的实现原理和作用 闭包: 有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式就是,在一个函数中创建另一个函数. 闭包的作用: 访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机 ...
 - 【RTOS】FreeRTOS中的任务堆栈溢出检测机制
		
目录 前言 任务堆栈 堆栈溢出 任务堆栈溢出检测机制 API 两种堆栈溢出检测方式 堆栈溢出钩子函数 内核何时检测任务堆栈溢出 任务堆栈溢出检测存在的局限性 前言 注意:本笔记发布时可能忘记补充查看d ...
 - arcgis engine 中出现的内存堆栈溢出问题。
		
两种解决方案: 1.循环加载mxd文档的时候出现的堆栈溢出,解决办法是每次循环结束时清空FeatureLayer,感觉并不好,但是确实可以实现功能. 2.循环调取featureclass的search ...
 
随机推荐
- 十进制    -> 十六进制
			
x /16 依次取余 ,最先余作十六进制的最低 字节有效位,最后的余数 作最高的字节有效位,其中我们需要注意理解 的是 一个 数据的 最高字节及 内存的 高地址及低地址 更进一步的就算机器存储的 ...
 - python:windows下python2.7安装mysql-python失败【转】
			
转自:https://www.cnblogs.com/yujiebingqing/p/9633476.html 当我们尝试用: 1 pip install mysql-python #并不是MySQL ...
 - (22/24) webpack实战技巧:静态资源集中输出
			
工作中会有一些已经存在但在项目中没有引用的图片资源或者其他静态资源(比如设计图.开发文档),这些静态资源有可能是文档,也有可能是一些额外的图片,而在打包时保留这些静态资源,直接打包到指定文件夹中.此时 ...
 - 分组密码算法AES-128,192,256 C语言实现第一版
			
AES的C语言实现入门版 AES分组密码算法中明文分组位128bits,密钥分组可以为128,192,256bits.AES也是由最基本的变换单位——“轮”多次迭代而成的.我们将 AES 中的轮变换计 ...
 - FPGA笔试必会知识点2—FPGA器件
			
FPGA 综合工具并不一定保证能够充分利用芯片结构特点以达到最优目的而且工具本身也不一定非常智能,因为设计本身是复杂多样的且一直在变化,问题总会越来越多,因此在这种情况下,我们必须了解我们的器件结构, ...
 - win10基础上安装linux系统,添加双系统启动项
			
1. 本机安装Centos7mini(注意点:进入安装界面先修改下面的内容,修改为U盘名称) 2. 配置文件/boot/grub2/grub.cfg,完成双系统启动设置. 3. 配置ip地址 nmcl ...
 - python源码探秘:用户函数的执行过程
			
脚本函数编译后如何执行?脚本编译后是pyc码,pycodeobject对象的串行化.import时是对pyc文件反系列化.函数编译后会生成函数对象,函数对象的TP_call对应的是function_c ...
 - PHP:自己写的mysql操作类
			
a{ font-weight: bold; display: block; text-align: center; color: #5887bf; font-size: 22px; } .conten ...
 - vChart
			
vue+echarts工具: https://v-charts.js.org
 - React16的interactiveUpdates
			
交互式更新是用户交互的结果. 它们比默认的非交互式更新(如服务器事件)具有更高的优先级. 异步模式下交互式更新的特殊之处在于,一次交互式更新可能会影响后续行为. 例如,一个表单字段上的"提交 ...