Ie8 compatibility mode 确定为何在兼容模式下呈现页面?

Ie8 compatibility mode 确定为何在兼容模式下呈现页面?,ie8-compatibility-mode,Ie8 Compatibility Mode,我有一个布局问题,这是由于包含页面在IE8上以兼容模式呈现。有没有办法检测是什么导致IE8进入特定页面的兼容模式 根据Microsoft的文档,以下条件可能导致页面以兼容模式()呈现: 已为页面启用兼容性视图 页面加载到Intranet区域,Internet Explorer 8配置为在兼容性视图中加载Intranet区域中的页面 Internet Explorer 8配置为在兼容性视图中显示所有网站 Internet Explorer 8配置为使用兼容性视图列表,该列表指定一组始终显示在兼容

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

根据Microsoft的文档,以下条件可能导致页面以兼容模式()呈现:

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

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

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

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

假设您有一个ID为compat警告的隐藏元素:

带jQuery的Javascript:

$(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();
});
$(函数(){
函数showCompatWarning(){
$(“#兼容警告”)
.css('显示','块')
.css('height','auto')
.show();
}
var tridentOffset=navigator.appVersion.indexOf('Trident/');
如果(tridentOffset==-1)返回;
var jscript版本=0;
/*@抄送@*/
/*@如果(@_jscript)jscript版本=@_jscript_版本;@*/;
/*@结束@*/
var tridentVersion=parseInt(navigator.appVersion.substr(tridentOffset+8),10);
var guessIEVersion=三齿版本+4;
if((document.documentMode&&jscript版本&&jscript版本<10&&jscript版本!==document.documentMode)||
(document.compatMode&&document.compatMode==='BackCompat')||
(document.documentMode&&document.documentMode<10&&document.documentMode!=guessIEVersion))
显示警告();
});

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

注意,
X-UA-Compatible
元标记需要是
标题中的第一个元标记。关于页面布局错误:当IE8呈现错误遇到“不可恢复的错误”时,将激活兼容性视图。我不确定这是什么。但是我建议让你的页面验证HTML(你有什么DOCTYPE?),然后试着一部分一部分地删除CSS和JavaScript,这样你就可以排除是什么导致了这个问题,