javascript - "elem[ type ]();"行的 IE8 jQuery 错误

标签 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 ](); 存在于 中触发函数。

我该如何解决这个问题?或者至少知道是哪个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/

相关文章:

jquery - 选择一个没有设置背景的元素

javascript - 开箱即用的 IE8 是否支持 'localStorage'

javascript - IE8 不再允许在不使用 substr 函数的情况下访问单个字符?

javascript - IE8 jQuery 提交不适用于表单

javascript - 带有选项的函数——我应该使用 $.extend() 来减少代码的冗长吗?

javascript - TypeScript - 命名空间/范围变量更新

javascript - 如果其中包含图像标签,如何获取 anchor 标签的 href 值

javascript - 在 slider 图像前面淡入图像或(信息文本)?

jquery - 响应式网站的背景大小

javascript - 我如何使用 Javascript 等待值在 html 中发生变化