Una página web puede no tener el foco en Internet Explorer 9

En este artículo se proporciona información sobre cómo resolver problemas de páginas web que no pueden tener el foco en Internet Explorer 9.

Versión del producto original:   Internet Explorer 9
Número de KB original:   2600156

Síntomas

Una página web o un control ActiveX hospedado en una página web puede dejar de recibir el foco intermitentemente cuando se ve con Internet Explorer 9. Los controles pueden aparecer deshabilitados o el foco puede acabar en la barra de direcciones cuando un usuario hace clic en la página para intentar obtener el foco. Este problema puede afectar a cualquier elemento de la interfaz de usuario de la página que pueda recibir el foco.

Causa

El problema se produce porque la ventana de pestaña se separa de la cola de entrada de la ventana de marco. Microsoft ha confirmado que se trata de un problema de Internet Explorer 9 relacionado con el funcionamiento de la característica de resistencia de bloqueo.

Solución

La corrección para este problema está disponible en la actualización acumulativa de Internet Explorer MS11-099 (KB 2618444) o en cualquier actualización acumulativa de Internet Explorer en adelante.

Hay varias formas de solucionar este problema:

  1. Evite realizar llamadas de bloqueo de larga duración o realizar cualquier trabajo sincrónico en un subproceso de interfaz de usuario que pueda interferir con la bomba de mensajes del subproceso.

  2. Cree el siguiente valor de clave del registro para deshabilitar la característica de resistencia de bloqueo:

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

    La característica resistencia de bloqueo está habilitada de forma predeterminada en Internet Explorer 9. Establecer el HangRecovery valor para 0 deshabilitar esta característica; se configura para habilitarla 1 .

  3. Evite llamar a AttachThreadInput u otras API que puedan dar como resultado el cambio del propietario de la ventana de pestaña, ya que estas API afectan a la cola de entrada del subproceso de la pestaña. Un ejemplo de una API que puede acabar cambiando la cola de entrada del subproceso de la pestaña es SetWindowLong.