网页可能无法在 Internet Explorer 9 中获得焦点

警告

已停用、不受支持的 Internet Explorer 11 桌面应用程序在某些版本的 Windows 10 上已通过 Microsoft Edge 更新永久禁用。 有关详细信息,请参阅 Internet Explorer 11 桌面应用停用常见问题解答

本文提供有关解决 Internet Explorer 9 中无法集中注意力的网页问题的信息。

原始产品版本: Internet Explorer 9
原始 KB 编号: 2600156

症状

使用 Internet Explorer 9 查看时,网页中托管的网页或 ActiveX 控件可能会间歇性地停止接收焦点。 当用户单击页面以尝试获取焦点时,控件可能显示为禁用,或者焦点可能最终出现在地址栏中。 此问题可能会影响页面上能够接收焦点的任何 UI 元素。

原因

出现此问题的原因是选项卡窗口与框架窗口的输入队列分离。 Microsoft 已确认,这是 Internet Explorer 9 中与挂起抵抗功能工作原理相关的问题。

解决方案

Internet Explorer 累积更新 MS11-099 (KB 2618444) 或任何 Internet Explorer 累积更新中提供了此问题的修补程序。

有几种方法可以解决此问题:

  1. 避免在可能会干扰线程的消息泵的 UI 线程上进行长时间运行的阻塞调用或执行任何同步工作。

  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 是一个 API 示例,该 API 最终可能会更改 Tab 线程的输入队列。