此文章用于对工作中遇到的问题进行记录
jQuery 版本:1.9.1
按照一般的思路,jquery 1.x的是支持ie9及以下的,但是今天发现jquery报错了,代码错误位置在源码版本的第4888行
"focus": function( elem ) {
return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);//line 4888
},
本来应该可以很快找到这里的错误的,结果IE9调试一两下就崩溃让我也很崩溃,花了半个多小时才明白错误在这T_T,
原因就是document.activeElement
在ie9/8浏览器的iframe里面找不到,然后百度了一下,果然有人比我先遇到这个问题,解决办法也很简单在使用jquery的iframe的head标签里面添加
<script>document.documentElement.focus();</script>
即可。
在搜索的时候,在MDN里面发现了这个tip:
[1] 在IE9中获取iframe中的activeElemet时会抛出异常,比如: parent.document.activeElement 会抛出异常。
原来这是个老坑了!!!
至于ie8会不会,我没有测试,不过相关链接里面第一条的是ie8测试出的问题
相关链接: