如果Internet Explorer在兼容性视图中运行,如何使用jquery进行检查

时间:2012-01-03 09:52:04

标签: jquery galleria

由于不推荐使用jQuery.browser并且jQuery.support是解决浏览器问题的推荐工具,因此建议的方法是什么来处理以下问题?

Galleria jquery插件的全屏主题在IE中无法正常工作(错误的图像定位)< 8和IE 8和9兼容性视图模式。 Doctype是HTML 5,并使用

关闭该模式
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 

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

更新:这是我们现在使用的代码(位于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>

3 个答案:

答案 0 :(得分:3)

  

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

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;
}

当然,您可能希望将其修改为使用<>测试。

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

答案 1 :(得分:2)

这是普通的javascript,而不是jQuery。您可以使用documentMode。见Determining Document Compatibility Mode。在这里documentMode Property

答案 2 :(得分:2)

从上面可以看出,这就是我用于IE7 Document或IE7 Compatabilty模式的内容。

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