此文章用于对工作中遇到的问题进行记录

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测试出的问题

相关链接:

  1. IE下 iframe子页面document.documentElement报错问题(未指明的错误。)
  2. https://stackoverflow.com/questions/14378224/document-activeelement-in-iframe-shows-unspecified-error-in-ie-standards-mode
  3. mdn document.activeElement
  4. https://www.telerik.com/forums/window-radopen-gives-document-activeelement-unspecified-error

相关文章:

  • 2021-09-14
  • 2022-12-23
  • 2021-10-15
  • 2022-12-23
  • 2021-12-31
  • 2021-07-22
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案