Greybox: не может перемещать фокус на элемент управления, потому что он невидим, не включен или тип, который не принимает фокус

<span> Возможный дубликат:</span> <a href="https://qa-help.ru/questions/javascript-oshibka-vidimosti-v-internet-explorer-pri-nastrojke-fokusa-na-element-vvoda" target="_blank">JavaScript: ошибка видимости в Internet Explorer при настройке фокуса на элемент ввода</a>

У меня есть страница, которая загружается в greybox. Я установил фокус с помощью document.getElementById("textfield").focus() - это прекрасно работает при прямом вызове страницы.

Но при загрузке в greybox установка фокуса на событие onload() возвращает:

Невозможно переместить фокус в элемент управления, потому что он невидим, не включен, или типа, который не принимает фокус

Позднее он работает нормально.

Любые идеи?

Спасибо!

2 ответа

Это хорошо известная проблема с IE.

Вы можете прочитать об этом здесь.

Решение заключается в использовании функции setTimeout() для задержки времени выполнения focus().

вам нужно заменить вашу строку:

document.getElementById("textfield").focus();

со следующим:

setTimeout(function() { document.getElementById("textfield").focus(); }, 10);


Просто быструю реакцию на это... пришлось решить сегодня вечером. Использовал setTimeout для быстрого вызова функции фокуса после отображения страницы greybox.

Небольшой jQuery, используемый в моей версии, поскольку он уже был в этом проекте, но вы можете так же легко использовать window.onload()

licensed under cc by-sa 3.0 with attribution.