我正在构建一个需要WebBrowser组件的软件。 不幸的是,它无法正确显示我的页面。
我的内容使用此CSS样式:
.content_mid{
background-image:url(http://img.awesome-o.net/Content_Mid.png);
background-size: 100% 100%;
vertical-align:text-top;
padding-left: 40px;
padding-right:20px;
min-height:400px;
}
由于我已经发现WebBrowser组件使用已安装的interwebs explorer版本,因此我在Internet Explorer上检查了html,它显示完美。
在这里你可以看到它在IE上显示的内容:
以下是它在webbrowser组件上的显示方式:
所以,我检查了浏览器版本:
Debug.WriteLine("WebBrowser version: " + webBrowser1.Version);
output: WebBrowser version: 9.0.8112.16443
所以我猜这应该没问题。
答案 0 :(得分:13)
This page描述了如何强制浏览器控件使用特定的渲染模式。
您也可以尝试此doctype
<!DOCTYPE html>
和/或head元素中的元元素
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
答案 1 :(得分:9)
仅供进一步参考需要此人的其他人:
首先: 感谢Boo&amp; Lex Li 帮助我找到问题的答案。
您必须将某个注册表设置为正确的值:
32位和64位应用程序有两组不同的键。
32位:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
Value Key: yourapplication.exe
64位:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
Value Key: yourapplication.exe
将此键设置为的值(取自此处的MSDN)为十进制值:
9999 (0x270F)
Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.
9000 (0x2328)
Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
8888 (0x22B8)
Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.
8000 (0x1F40)
Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.
7000 (0x1B58)
Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.
即使是强硬的MSDn声称9000是自动分配的值。显然,这根本不是真的。
您可以在下面找到如何将这些密钥添加到注册表的代码。请不要在调试时您的应用程序具有不同的进程名称。
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true);
if (key != null)
{
key.SetValue("YourApplicationName.exe", 9000, RegistryValueKind.DWord);
}
key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true);
if (key != null)
{
key.SetValue("YourApplicationName.exe", 9000, RegistryValueKind.DWord);
}
非常感谢所有人和好运
编辑:应关闭用户帐户控制以使此代码有效。
答案 2 :(得分:2)
我遇到了同样的问题,我更改了这一行:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
到
<meta http-equiv="X-UA-Compatible" content="IE=11" />
使用最新版的IE,效果很好。
答案 3 :(得分:0)
您还可以向IIS应用程序添加响应标头,称为X-UA兼容,其值为IE = Edge。我倾向于将它添加到我的web.config