【发布时间】:2010-10-12 00:05:48
【问题描述】:
我知道现代浏览器一般有两种渲染模式:标准模式和怪异模式。浏览器检测到标题 DocType。
问题是如何在运行时检测当前页面的渲染模式。是否有任何 Firebug 工具可以做到这一点?
【问题讨论】:
标签: javascript browser render standards mode
我知道现代浏览器一般有两种渲染模式:标准模式和怪异模式。浏览器检测到标题 DocType。
问题是如何在运行时检测当前页面的渲染模式。是否有任何 Firebug 工具可以做到这一点?
【问题讨论】:
标签: javascript browser render standards mode
IE8 之前:
alert('Page was rendered in ' +
((document.compatMode == 'CSS1Compat') ? 'Standards' : 'Quirks') + ' Mode.');
对于 IE8:
var vMode = document.documentMode;
var rMode = 'IE5 Quirks Mode';
if(vMode == 8){
rMode = 'IE8 Standards Mode';
} else if(vMode == 7){
rMode = 'IE7 Strict Mode';
}
alert('Rendering in: ' + rMode);
请注意,要获得 IE8 新的“默认标准模式”行为的好处,您需要在 IE8 标准模式下进行渲染。
此模式会影响 HTML+CSS 的呈现以及对 JavaScript 的修复方法,例如 document.getElementById( id ); 和 .setAttribute( name, value );
【讨论】:
document.compatMode 看看是BackCompat(Quirks 模式)还是CSS1Compat(标准兼容模式)
您还应该看看 jQuerys jQuery.support 。它会告诉你浏览器支持哪些标准(boxModel、opacity 等)
http://docs.jquery.com/Utilities/jQuery.support
即
jQuery.support.boxModel; //false in IE when in quirksmode, true otherwise.
【讨论】: