我想在 C# 应用程序中使用 IE8 作为 WebBrowser 控件。如何禁用“怪癖模式”并强制 IE 符合标准(就其实施而言)?
5 回答
如果您不想使用注册表项技术,可以插入以下标记:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
“内容”属性强制以各种模式进行渲染。
我认为您面临的问题在IEBlog: WebBrowser Control Rendering Modes in IE8中有描述:
虽然网站管理员可以轻松地更改他们的网站以在新版本的 IE 中正确呈现,但许多软件供应商没有资源立即推出具有更新的内部页面的应用程序的新版本。为了确保这些现有应用程序保持正常工作, IE8 默认以 IE7 标准模式呈现在 WebBrowser 控件实例中运行的页面。
在这里我应该注意到,页面上的评论说上面的内容是不正确的,并且“ IE8 默认情况下会在 IE7 严格模式或 Quirks 模式下呈现在 WebBrowser 控件实例中运行的页面,具体取决于页面的文档类型。”
解决方法如下:
当可执行文件加载 WebBrowser 控件的实例时,它会扫描注册表以检查可执行文件是否需要 IE7 标准或 IE8 标准模式。
...
要在 IE8 标准模式下运行,请插入以下注册表值:
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE]
"MyApplication.exe"=dword:13880
在这两种情况下,应将 MyApplication.exe 替换为将在指定模式下运行 WebBrowser 控件的可执行文件的名称。
因此,听起来“程序化”解决方案是在注册表中写入一个键,说明您希望 IE8 标准模式用于WebBrowser
特定应用程序中的控件。
请注意,自测试版以来发生了一些变化,注册表项已重命名等 。在此处阅读更多信息。
这有实际代码以编程方式执行此操作,并且到目前为止最多可处理 IE11: