如何在WinForms应用程序中关闭IE WebBrowserControl上的兼容性视图?

Dan*_*eny 33 browser internet-explorer cross-browser webbrowser-control winforms

在我的WinForms应用程序中,如果我使用WebBrowser控件,它似乎被强制进入兼容模式.如何禁用此功能,并使其在浏览同一站点时与我的计算机上的独立IE操作相同?

  • 我不想进行注册表更改.我希望一切都包含在我的应用程序中.
  • 我加载的网站不是我的,所以我没有能力对它进行更改(除非它们可以在我的应用程序中以编程方式完成).

Kev*_*Kev 55

除配置以下注册表设置外,无法执行此操作:

HKLM\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

或者如果它是64位Windows上的32位应用程序:

HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION`

这些设置未在WebBrowser控件中显示.

有关更多信息,请参阅:

Web浏览器控件使用什么IE兼容模式?

如果链接死亡:

您创建一个DWORD与可执行文件名称匹配的值,并将此值设置为以下值之一:

7000:包含基于标准的<!DOCTYPE>指令的页面以IE7模式显示.
8000:包含基于标准的<!DOCTYPE>指令的页面以IE8模式显示
8888:无论<!DOCTYPE>指令如何,页面始终以IE8模式显示.(这绕过了前面列出的例外.)
9000:使用IE9设置!
9999:强制IE9

例如:

在此输入图像描述

从我自己的IE9实验:

  • 9000 - 继承IE9全局兼容模式设置中设置的兼容模式.即: 在此输入图像描述

  • 9999 - 无论全局配置的兼容模式设置如何,都强制IE9退出主机应用程序中的兼容模式

您的应用程序可能需要检测哪些底层IE版本可用于确定要使用的值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version

或者如果它是64位Windows上的32位应用程序:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Version

IE8问世的这篇较老的文章也值得一看:

更多IE8可扩展性改进

您还可以在每个用户的基础上配置以下设置:

HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

  • 我真的不明白为什么控件对浏览器的行为会有所不同 - 看起来完全不直观:(我在考虑自己发送WebRequests并将结果解析到我自己的UI中.我试图避免它,但它可能会去是最简单的解决方案! (4认同)

小智 26

虽然这不是你问的,如果你拥有该网站,你可以将以下内容添加到html的head部分:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />

请参阅:http: //msdn.microsoft.com/en-us/library/cc288325(v = vs.85).aspx


mbo*_*kil 5

这是问题的一小部分:如果用户在IE8中启用兼容性视图,那么它将覆盖所有页面指令.因此,如果用户在IE中启用了此功能,则您尝试使用的任何页面或服务器变量都将无法阻止IE切换到兼容性视图.大多数人认为页面指令或某种秘密头服务器变量将修复该站点.不.如果已手动覆盖设置,则这些解决方案都不起作用.我知道,这并不酷.因此,仅当用户启用兼容性视图功能时,以下内容才有效.

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
Run Code Online (Sandbox Code Playgroud)

要澄清在注册表中更改此步骤的步骤,请编辑密钥:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
Run Code Online (Sandbox Code Playgroud)

然后添加一个名为iexplore.exe的新DWORD .要执行此操作,请右键单击该键,然后选择"新建">"DWORD".给该DWORD十进制值9999.这将使所有站点呈现而没有兼容性视图.要再次启用兼容性视图,请删除此DWORD.此外,如果您希望自动执行此更改并在系统上运行批处理脚本,请查看Michal M的脚本.

https://gist.github.com/michal-m/1853315