如何以编程方式关闭IE8 WebBrowser控件中的怪癖模式?

时间:2009-03-14 21:11:29

标签: c# internet-explorer-8 webbrowser-control standards-compliance quirks-mode

我想在C#应用程序中使用IE8作为WebBrowser控件。如何禁用“怪癖模式”并强制IE符合标准(就其实施而言)?

5 个答案:

答案 0 :(得分:25)

如果您不想使用注册表项技术,可以插入以下标记:

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

“content”属性强制以各种模式呈现。

答案 1 :(得分:14)

我认为您面临的问题在IEBlog: WebBrowser Control Rendering Modes in IE8

中有所描述
  

虽然网站管理员可以轻易改变   他们的网站在正确呈现   新版IE,很多软件   供应商没有资源   立即推出新版本   他们的应用程序更新   内部页面。   为了确保这些存在   应用程序保持正常运行状态    IE8呈现在其中运行的页面   WebBrowser控件的实例   默认情况下为IE7标准模式。

这里我要注意页面上的注释说上面的内容不正确,并且“ IE8默认情况下在IE7严格模式或Quirks模式下呈现在WebBrowser控件实例中运行的页面,具体取决于在页面的doctype上。“

解决方案如下:

  

当可执行文件加载实例时   它扫描的WebBrowser控件   注册表检查是否   可执行文件需要IE7标准或IE8   标准模式。

     

...

     

在IE8标准模式下运行插入   以下注册表值:

     

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE]

     

"MyApplication.exe"=dword:13880

     

在这两种情况下,   应该替换MyApplication.exe   用可执行文件的名称   将运行WebBrowser控件   指定的模式。

因此,听起来“编程”解决方案是在注册表中写一个密钥,说明您希望在特定应用程序中使用WebBrowser控件的IE8标准模式。

答案 2 :(得分:4)

我听到的最后一点是IE8会使用standards mode by default。您是否看到最新测试版的实际问题?你确定它是以怪癖模式渲染开始的,没有用户明确点击compatibility view button吗?

答案 3 :(得分:3)

请注意自测试版以来发生了一些变化,注册表项已重命名等。Read more here

答案 4 :(得分:0)

这有实际的代码以编程方式执行此操作并处理到目前为止的IE11:

C# webbrowser Ajax call