【问题标题】:How to check with jquery if Internet Explorer is running in Compatibility View如果 Internet Explorer 在兼容性视图中运行,如何使用 jquery 检查
【发布时间】:2012-01-03 09:52:03
【问题描述】:

既然 jQuery.browser 已被弃用,而 jQuery.support 是解决浏览器问题的推荐工具,那么处理以下问题的推荐方法是什么?

Galleria jquery 插件的全屏主题在 IE 关闭该模式

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

完成它的工作,但是我如何正确使用 jQuery.support 检查 IE 版本是否为 或兼容性视图仍然以某种方式打开(因为那么我们为这些用户使用另一个主题)?

更新:这是我们现在使用的代码(在 html 的底部)。

<script type="text/javascript">
    $(document).ready(function () {
        if ($.browser.msie && $.browser.version < 8) {
            Galleria.loadTheme('js/galleria/themes/classic/galleria.classic.min.js');
            $("#gallery").galleria({
            /* ... */
            });
        } else {
            Galleria.loadTheme('js/galleria/themes/fullscreen/galleria.fullscreen.min.js');
            $("#gallery").galleria({
            /* ... */
            });
        }
    });

</script>

【问题讨论】:

  • 你不能只使用正确的文档类型并确保页面以标准模式呈现,而不是兼容模式吗?比如:&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"&gt;.
  • 您不应该将您的网页设计为在多种模式下运行。你应该选择你想要设计的模式,指定它而不担心其他模式。如果查看者强制页面进入另一种模式,他们会得到应得的。
  • @jfriend00:我使用的是 HTML 5 ,我想我做到了 这样做是因为它强制 IE 进入标准模式。
  • @jfriend00:你可以这样说(虽然我当然不会因为我试图让我的网站尽可能兼容),但它既不能解决 IE 7 问题,也不能回答 jquery .support 问题。
  • 祝你好运设计多种模式。这不应该是您必须做的事情,即使在设计良好的兼容性时也是如此。我不知道如何检测 javascript 中的模式,这就是我没有写答案的原因。你可以检查一下modernizr是否有这个能力,看看他们是怎么做到的。

标签: jquery galleria


【解决方案1】:

如何正确使用jQuery.support 检查IE 版本是否为或兼容性视图是否仍以某种方式打开?

jQuery.support isn't designed to detect browser versions,但用于检测特定的浏览器错误。如果您可以确定此错误的来源(可能由 .boxModel 属性测试?),您可以将 if 语句基于该逻辑。

功能检测比简单地检测浏览器版本更强大,因为理想情况下,测试将适用于任何有问题的浏览器 - 不一定只是 IE 系列中的浏览器。

如果您不想追踪该浏览器错误的来源(从而找到正确的.support 测试),那么this thread seems to give a slightly more "complete" test for browser version and compatbility mode detection

这是来自该线程的代码:

isIE8CompatMode() {
    return $.browser.msie
        && $.browser.version == 7.0
        && document.documentMode
        && document.documentMode == 8;
}

当然,您可能希望修改它以使用 &lt;&gt; 测试。

它仍然依赖于$.browser,但似乎也对兼容模式进行了额外的检测(通过the IE-specific document.documentMode property)。

【讨论】:

  • 感谢您对 jQuery.support 和 .boxModel 提示的解释,我将检查。你提供的代码对我有用。
【解决方案2】:

这是纯 javascript,而不是 jQuery。您可以使用文档模式。见这里Determining Document Compatibility Mode。在这里documentMode Property

【讨论】:

  • 谢谢,document.compatMode 看起来很有希望。虽然它离开了 jquery 上下文。
【解决方案3】:

从上面看,这是我用于 IE7 文档或 IE7 兼容模式的。

var IE7BrowserMode = ($.browser.msie && $.browser.version == 7.0);
var IE7DocumentMode = ($.browser.msie && document.documentMode && document.documentMode == 7);
return( IE7BrowserMode || IE7DocumentMode );

【讨论】:

  • 谢谢。 Merlyns 答案的变体。
猜你喜欢
  • 1970-01-01
  • 2019-03-29
  • 2012-02-05
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多