我们遇到了同样的问题。为了聚焦,我们正在使用 General 函数,该函数应用了以下提到的 settimeout 解决方案:http ://www.mkyong.com/javascript/focus-is-not-working-in-ie-solution/
100 毫秒。
仍然在某些屏幕上它不能正常工作。特别是当包含 iframe 时。还有一个已知的类似 IE 问题:
IE 9 和 IE 10 有时无法在输入文本框中输入文本 -> IE 9 和 IE 10有时
无法在输入文本框中输入文本
我注意到的是,当你有焦点时,没有指针,你可以通过按 TAB 键(焦点在下一个元素)而不是 SHIFT+TAB 来应用解决方法,这将返回到我们的目标元素并带有焦点并键入指针。为了确保我们可以输入内部输入,我们专注于随机元素,然后是我们的目标输入。
$('body').focus();
n.focus();
因此,我们在 javascript/JQuery 中的常规焦点功能中应用了相同的解决方案。所以有一个 if 语句
...
if($.browser.msie) {
setTimeout(function() { try {
$('body').focus(); //First focus on random element
$(n).focus(); //Now focus on target element
} catch (e) { /*just ignore */ } }, 100); //See http://www.mkyong.com/javascript/focus-is-not-working-in-ie-solution/
} else { //Standard FF, Chrome, Safari solution...
...
可以肯定的是,由于存在较大的回归,我们仍然保留使用 settimeout 作为备份的解决方案。在 IE10、IE11、Firefox 45、Chrome 49.0.2623.87 上测试