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控件中显示.
有关更多信息,请参阅:
如果链接死亡:
您创建一个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问世的这篇较老的文章也值得一看:
您还可以在每个用户的基础上配置以下设置:
HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
小智 26
虽然这不是你问的,如果你拥有该网站,你可以将以下内容添加到html的head部分:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
请参阅:http: //msdn.microsoft.com/en-us/library/cc288325(v = vs.85).aspx
这是问题的一小部分:如果用户在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