如何使用jquery检查Internet Explorer是否在兼容性视图中运行



自jQuery。浏览器已弃用和jQuery。支持是解决浏览器问题的推荐工具,处理以下问题的推荐方法是什么?

Galleria jquery插件的全屏主题在IE中不能正常工作(错误的图像定位)<8和ie8和ie9的兼容性视图模式。文档类型为HTML 5,并使用

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

完成了它的工作,但是我如何使用jQuery。请检查IE版本是否为<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>

我如何正确使用jQuery.support做检查如果IE版本是<8 兼容性视图不知何故仍然打开?

jQuery.support不是用来检测浏览器版本的,而是用来检测特定的浏览器错误的。如果您可以确定这个bug的来源(可能通过.boxModel属性进行测试?),您可以将If语句改为基于该逻辑。

功能检测比简单地检测浏览器版本更健壮,因为理想情况下,测试可以针对任何有bug的浏览器——不一定只是IE系列的浏览器。

如果你不想追踪浏览器bug的来源(从而找到正确的.support测试),那么这个线程似乎为浏览器版本和兼容模式检测提供了一个稍微"完整"的测试。

下面是该线程的代码:
isIE8CompatMode() {
    return $.browser.msie
        && $.browser.version == 7.0
        && document.documentMode
        && document.documentMode == 8;
}

当然,您可能想要修改它以使用<>测试。

它仍然依赖于$.browser,但似乎也为兼容模式做了额外的检测(通过ie特定的document.documentMode属性)。

这是纯javascript,不是jQuery。你可以使用documentMode。请参阅此处确定文档兼容模式。

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

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

最新更新