在我的WinForms应用程序中,如果我使用WebBrowser控件,它似乎被强制进入兼容模式。如何禁用此功能,并使其在浏览同一站点时与我的计算机上的独立IE操作相同?
答案 0 :(得分: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
答案 1 :(得分:26)
虽然这不是你问的,如果你拥有该网站,你可以将以下内容添加到html的head部分。:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
请参阅: http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx
答案 2 :(得分:5)
以下是问题的一小部分:如果用户在IE8中启用兼容性视图,那么它将覆盖所有页面指令。因此,如果用户在IE中启用了此功能,则您尝试使用的任何页面或服务器变量都将无法阻止IE切换到兼容性视图。大多数人认为页面指令或某种秘密头服务器变量将修复该站点。不。如果已手动覆盖设置,则这些解决方案都不起作用。我知道,这并不酷。因此,仅当用户未启用兼容性视图功能时,以下内容才有效。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
要澄清在注册表中更改此项的步骤,请编辑密钥:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
然后添加一个名为 iexplore.exe 的新DWORD。要执行此操作,请右键单击该键,然后选择新建&gt; DWORD。将该DWORD设置为 9999 的十进制值。这将使所有站点呈现而没有兼容性视图。要再次启用兼容性视图,请删除此DWORD。此外,如果您希望自动执行此更改并在系统上运行批处理脚本,请查看Michal M的脚本。
答案 3 :(得分:2)
我知道这是一个老问题但是有一种方法可以在Visual Basic 2010及更高版本的webbrowser控件中插入标题,以便禁用兼容性视图:
您需要做的第一件事就是抓住当前网页,然后按如下方式替换head标签:
Sub compatible()
' --- simple routine to disable compatible view.
Dim the_url As String
Dim message As String
Dim theReplacement As String
Dim oldMessage As String
the_url = WebBrowser1.Url.OriginalString
WebBrowser1.Navigate(the_url)
message = "<head>" + Chr(13) + Chr(10) + "<meta http-equiv=" + Chr(34) + "X-UA-Compatible" + Chr(34) + "content=" + Chr(34) + "IE=edge" + Chr(34) + " />" + Chr(13) + Chr(10) + "<base href=" + Chr(34) + the_url + Chr(34) + ">"
oldMessage = WebBrowser1.DocumentText.ToString()
theReplacement = Replace(oldMessage, "<head>", message)
WebBrowser1.DocumentText = theReplacement
End Sub
此代码在webbrowser控件中添加以下两行:
<meta http-equiv="X-UA-Compatible"content="IE=edge" />
<base href="(url of the web page)">