Веб-страница может не получить фокус в Internet Explorer 9

Предупреждение

Устаревшее и не поддерживаемое классическое приложение Internet Explorer 11 было окончательно отключено путем обновления Microsoft Edge в некоторых версиях Windows 10. Дополнительные сведения см. в разделе Часто задаваемые вопросы о прекращении поддержки программы для настольных компьютеров Internet Explorer 11.

В этой статье содержатся сведения об устранении проблем с веб-страницами, которые не могут сосредоточиться в Internet Explorer 9.

Исходная версия продукта: Internet Explorer 9
Исходный номер базы знаний: 2600156

Симптомы

Веб-страница или элемент управления ActiveX, размещенный на веб-странице, может перестать получать фокус периодически при просмотре с помощью Internet Explorer 9. Элементы управления могут отображаться отключенными, или фокус может оказаться в адресной строке, когда пользователь щелкает страницу, чтобы попытаться получить фокус. Эта проблема может повлиять на любой элемент пользовательского интерфейса на странице, который может получать фокус.

Причина

Проблема возникает, поскольку окно вкладки отсоединяется от очереди ввода окна рамки. Корпорация Майкрософт подтвердила, что это проблема в Internet Explorer 9, связанная с тем, как работает функция "Защита от зависания".

Решение

Исправление этой проблемы доступно в накопительном обновлении Internet Explorer MS11-099 (KB 2618444) или любом накопительном обновлении Internet Explorer.

Существует несколько способов обойти эту проблему:

  1. Избегайте длительных блокирующих вызовов или выполнения синхронной работы в потоке пользовательского интерфейса, которые могут потенциально повлиять на обработку сообщений.

  2. Создайте следующий ключ реестра, чтобы отключить функцию "Сопротивление зависания".

    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\
    Type: REG_DWORD
    Name: HangRecovery
    Value: 0
    

    Функция "Защита от зависания" активирована по умолчанию в Internet Explorer 9. Установка значения HangRecovery в 0 отключает эту функцию; установка в 1 включает её.

  3. Избегайте вызова AttachThreadInput или других API, которые могут привести к изменению владельца окна вкладки, так как они влияют на очередь входных данных потока вкладки. Пример API, который может изменить входную очередь потока ввода вкладки, — SetWindowLong.