【发布时间】:2010-10-13 09:39:52
【问题描述】:
我想在 C# 应用程序中使用 IE8 作为 WebBrowser 控件。如何禁用“怪癖模式”并强制 IE 符合标准(就其实施而言)?
【问题讨论】:
标签: c# internet-explorer-8 webbrowser-control standards-compliance quirks-mode
我想在 C# 应用程序中使用 IE8 作为 WebBrowser 控件。如何禁用“怪癖模式”并强制 IE 符合标准(就其实施而言)?
【问题讨论】:
标签: c# internet-explorer-8 webbrowser-control standards-compliance quirks-mode
如果您不想使用注册表项技术,可以插入以下标记:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
“内容”属性强制以各种模式呈现。
【讨论】:
<meta http-equiv="X-UA-Compatible" content="IE=8"/>。
我认为IEBlog: WebBrowser Control Rendering Modes in IE8 中描述了您面临的问题:
虽然网站管理员可以轻松更改 他们的网站在 新版IE,很多软件 供应商没有资源 立即推出新版本 他们的应用程序已更新 内部页面。 为了确保这些现有 应用程序仍处于工作状态, IE8 呈现在其中运行的页面 WebBrowser 控件的实例 默认为 IE7 标准模式。
在这里我应该注意页面上的 cmets 说上面的内容是不正确的,并且“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 控件 指定的模式。
所以听起来“程序化”解决方案是在注册表中编写一个键,说明您希望在特定应用程序中为WebBrowser 控件使用 IE8 标准模式。
【讨论】:
FEATURE_NATIVE_DOCUMENT_MODE 已被 FEATURE_BROWSER_EMULATION 取代。
我最后听说的是 IE8 会使用standards mode by default。您是否发现最新测试版存在实际问题?你确定它以怪异模式开始渲染,而没有用户明确点击compatibility view button吗?
【讨论】:
WebBrowser 控件和独立浏览器在这种情况下的行为不同。
请注意,自测试版以来发生了一些变化,注册表项已重命名等。Read more here。
【讨论】:
这有实际代码以编程方式执行此操作,并且到目前为止可以处理 IE11:
【讨论】: