确定页面在兼容模式下呈现的原因?

我有一个布局问题,这是由于在IE8上以兼容模式呈现了包含页面。 有没有办法来检测什么导致IE8进入特定页面的兼容模式?

根据Microsoft的文档,以下情况可能导致页面以兼容模式呈现(http://msdn.microsoft.com/zh-cn/library/cc288325%28VS.85%29.aspx):

  • 兼容性视图为页面启用。
  • 该页面加载到Intranet区域,并将Internet Explorer 8配置为兼容性视图中的Intranet区域中的页面。
  • Internet Explorer 8配置为在兼容性视图中显示所有网站。
  • Internet Explorer 8配置为使用兼容性视图列表,该列表指定始终在兼容性视图中显示的一组网站。
  • 开发人员工具用于覆盖网页中指定的设置。
  • 网页遇到页面布局错误,Internet Explorer 8配置为通过在兼容性视图中重新打开页面来自动从此类错误中恢复。
  • 在浏览页面之后,我排除了第一种可能性,即它必须是页面上的页面布局错误。 我想找到这个错误。


    检查是否有任何<meta>标签强制IE进入兼容模式。

    如果您愿意,您可以强制它呈现为IE8(完全符合CSS 2.1):

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

    假设你有一个ID为compat-warning的隐藏元素:

    Javascript w / jQuery:

    $(function(){
        function showCompatWarning() {
            $('#compat-warning')
                .css('display','block')
                .css('height','auto')
                .show();
        }
        var tridentOffset = navigator.appVersion.indexOf('Trident/');
        if ( tridentOffset === -1 ) return;
        var jscriptVersion = 0;
        /*@cc_on @*/
        /*@if (@_jscript) jscriptVersion = @_jscript_version ; @*/;
        /*@end @*/
        var tridentVersion = parseInt(navigator.appVersion.substr(tridentOffset+8),10);
        var guessIEVersion = tridentVersion + 4;
        if (( document.documentMode && jscriptVersion && jscriptVersion < 10 && jscriptVersion !== document.documentMode ) ||
            ( document.compatMode && document.compatMode === 'BackCompat') ||
            ( document.documentMode && document.documentMode < 10 && document.documentMode != guessIEVersion ))
            showCompatWarning();
    });
    

    检测和警告,您的第一道防线和最后一道防线兼容地狱。

    链接地址: http://www.djcxy.com/p/46379.html

    上一篇: determining why a page is being renderred in compatibility mode?

    下一篇: how to reanalyze the solution?