Javascript IE8 jQuery第行出现错误;元素[类型]()&引用;

Javascript IE8 jQuery第行出现错误;元素[类型]()&引用;,javascript,jquery,internet-explorer-8,Javascript,Jquery,Internet Explorer 8,我在IE8中使用jQuery 1.7.2、1.8.0或1.8.3时遇到问题。该网页在Chrome、Firefox、IE9、Safari和Opera中运行良好 在IE8中,它会在开发人员工具中提示以下错误: 无法将焦点移动到控件,因为该控件不可见、未启用或其类型不接受焦点 这个错误发生在jQuery 1.8.0和1.8.3中的第2973行(在1.7.2中是第3242行):elem[type]() 我怎样才能解决这个问题?或者至少知道是哪个触发器执行导致了此问题 任何提示都将不胜感激。这是IE中的一

我在IE8中使用jQuery 1.7.2、1.8.0或1.8.3时遇到问题。该网页在Chrome、Firefox、IE9、Safari和Opera中运行良好

在IE8中,它会在开发人员工具中提示以下错误:

无法将焦点移动到控件,因为该控件不可见、未启用或其类型不接受焦点

这个错误发生在jQuery 1.8.0和1.8.3中的第2973行(在1.7.2中是第3242行):
elem[type]()触发器
函数中的code>

我怎样才能解决这个问题?或者至少知道是哪个
触发器
执行导致了此问题


任何提示都将不胜感激。

这是IE中的一个老错误(很高兴知道它在8中得到了修复)。我不知道正式原因,但我相信这与IE在执行上下文完成之前不重新绘制DOM有关,同时在元素认为它仍然隐藏时尝试
focus()
元素:

function calledAtSomePoint() { // begin execution

    // ...

    element.style.display = ''; // show container
    input.focus(); // IE thinks element is hidden 

    // end of execution, IE repaints the DOM but it's too late
} 
:

我已经经历过很多次了,包括jQuery。这不是任何图书馆的过错。
setTimeout
对我来说一直都能解决这个问题。

读了这篇文章后(评论中由@nez指出)。我在我的代码中搜索了
.focus
调用,大约有50个调用分布在第三方,如jqueryui、jQuery.validate和我的代码本身。我决定更改jQuery1.8.3本身,而不是更改一堆其他第三方库

因此,我在jQuery-1.8.3.js中更改了以下第2973行:

elem[ type ]();
致:


看看:是的,我遇到这个问题是因为jQueryUI(我不能真正修改它)。我要试试你的办法。我想知道(并希望)jQuery的更新版本是否能修复这个bug。更现实地说,我希望我的用户群能够从IE8升级到令人震惊的IE8(2015年9月,20%的用户仍然使用IE8,WTF?)。仅供参考,在我的代码中是2972行
elem[ type ]();
try {
  this.newelement[0].focus();
} catch(err){}