我们有一段代码将容器元素的可见性设置为hidden
,对其子代执行某些操作,然后将可见性设置回visible
。它在现代浏览器中运行良好,但在IE中,容器内的输入元素在执行后失去焦点。
为了演示这种情况,我们说:
<div id="container">
<input id="input"/>
</div>
如果你这样做:
var containerEl = document.getElementById('container');
var inputEl = document.getElementById('input');
inputEl.focus();
containerEl.style.visibility = 'hidden';
containerEl.style.visibility = 'visible';
输入元素是Chrome中的焦点。它在IE中失去了重点。
请参阅This Demo
我在测试时使用的是最新的Chrome66和IE11。
那么,为什么
containerEl.style.visibility = 'hidden';
containerEl.style.visibility = 'visible';
让焦点输入在IE中失去焦点?