我在 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 ]();
存在于 中触发
函数。
我该如何解决这个问题?或者至少知道是哪个trigger
执行导致了这个问题。
任何提示将不胜感激。
最佳答案
这是 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
}
The solution is to use setTimeout
:
setTimeout(function() {
document.getElementById('add-comment-login-overlay-username-input').focus()
}, 0)
我遇到过很多次,包括 jQuery。这不是任何图书馆的错。 setTimeout
一直为我解决这个问题。
关于javascript - "elem[ type ]();"行的 IE8 jQuery 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14622689/