chrome浏览器版本(版本 69.0.3497.100)
测试web项目时,发现一个页面经常卡死,经过各种排除,终于找到了原因。
先说现象:
每当输入框input失去焦点(即触发blur事件)时,页面就卡死动不了了。
排除过程:
1.开始怀疑是数据太大,导致浏览器卡死了。不过也才100多条记录,应该也不至于啊。之前处理1000多条都没问题。排除。
2.怀疑自己代码哪里写错了,死循环,或者bug。多次仔细检查,没发现问题。
3.怀疑使用的框架有bug。
4.代码太多导致不好找原因,所以使用了最原始的方法调试。不停的删减代码,最终发现了是chrome浏览器的问题。
最终测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>parentNode测试</title>
</head>
<body>
<form id="frm" >
parentNode1: <input name="parentNode" ><br/><br/>
parentNode2: <input name="test123" ><br/>
其中一个input的name属性为“parentNode”,当输入框失去焦点(触发input的blur事件)时会卡死。
</form>
</body>
</html>
该html文件本地用chrome打开没问题,但是发布后访问时,触发blur事件就会卡死。比如发布到tomcate后访问,页面就动不了了。
问题关键:对一个input标签的name属性命名为"parentNode",从而引起浏览器解析出现了bug。
解决方案:使用标签元素时,避免给name属性命名为parentNode。当然chrome能修复此问题更好了。