MSIES WebBrowser控件托管在Winforms应用程序中以兼容模式运行
题
我正在以Winforms形式托管MSIE。不幸的是,它坚持在兼容模式下运行,无论我是否给它提供一个以独立IE的IE8模式运行的页面。这样做的效果是,在独立的MSIE中正确呈现的某些内容在托管控件中完全误导并弄乱了。
除了文档类型等,还有一些神奇的方法告诉WebBrowser我希望它以与我将其加载到独立的MSIE中相同的方式渲染页面?
我不想使用注册表密码覆盖( http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx )由于我的表格是另一个应用程序加载项的一部分。我不想更改主应用程序的IE行为,也不想将其更改为在该应用程序下运行的其他附加组件。我只希望它在托管的浏览器中工作 我的 形式,不在应用范围内,也不是整个过程。
解决方案
我没有测试过,但是使用 元 标签,以及 http-equiv 属性,设置 X-UA-COMPATIBLE
价值为 IE=8
, ,指示Web浏览器以IE 8标准模式显示页面。一个例子是:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
从以下行中 文章 看来这应该起作用。
默认情况下,除非该页面包含适当的X-UA兼容标头,否则在IE7模式下托管WebBrowser Control Open Standard的应用程序。您可以通过将应用程序可执行文件的名称添加到功能_BROWSER_EMULATION功能控制密钥并相应地设置该值来更改此操作。
其他提示
要更改应用程序中运行的Web浏览器控件的默认行为以匹配IE本身的功能,您必须设置 feature_browser_emulation 功能控制密钥。
例如,您可以模仿IE8的行为(允许站点以IE8标准模式渲染),如下所示。
里面 HKEY_LOCAL_MACHINE SOFTWORD MICROSOFT Internet Explorer Main farmaturecontrol
创建一个名称的新键 feature_browser_emulation
在该键内,添加一个带有值的新reg_dword 8000 用您的应用程序的可执行文件的名称。例如:
"YourApp.exe" = dword 8000 (Hex: 0x1F40)
更多详细信息是:http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx