【问题标题】:How to programmatically turn off quirks mode in IE8 WebBrowser control?如何以编程方式关闭 IE8 WebBrowser 控件中的怪癖模式?
【发布时间】:2010-10-13 09:39:52
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 上面的标签是从我的帖子中删除的。只需添加左尖括号即可。
    • 只需用反引号包围您的元标记,如下所示:<meta http-equiv="X-UA-Compatible" content="IE=8"/>
    • 我认为问题实际上是如何强制浏览器本身(他使用 asp.net WebBrowser 控件在他的应用程序中“创建”浏览器)。更改此元参数或文档类型(这是通常的解决方案 - 请参阅 en.wikipedia.org/wiki/Quirks_mode)是您在站点级别执行的操作...... Daniel 解释的是如何将任何站点的设置覆盖为标准的非怪癖模式。我认为丹尼尔已经正确解释了这一点。
    • 我的经验是有细微的差别:使用Registry的方式,IE8嵌入就和IE8一样。使用元标记,仍然有一些 IE7-ish 渲染。
    • @Elijah 我必须问,这是唯一的吗,Elijah Manor?
    【解决方案2】:

    我认为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 标准模式。

    【讨论】:

    • 如果在浏览器控件上设置一个属性会更好 - 当用户没有注册表权限时这会更容易,尽管在 HKEY_CURRENT_USER 下这不是一个问题(密钥也是在 HKEY_LOCAL_MACHINE 下的等效点工作)。
    • 仅供参考,FEATURE_NATIVE_DOCUMENT_MODE 已被 FEATURE_BROWSER_EMULATION 取代。
    【解决方案3】:

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

    【讨论】:

    • 我认为WebBrowser 控件和独立浏览器在这种情况下的行为不同。
    • 看起来像,是的。将编辑问题标题以使其更具体。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      C# webbrowser Ajax call

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 2013-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-13
        • 2012-01-23
        相关资源
        最近更新 更多