Javascript 如何在Safari 3.0.x中检测怪癖模式?
Safari 3.0.x不支持document.compatMode属性来检测文档是以标准模式还是以怪癖模式呈现。Safari 3.1和更新版本确实支持它。如果document.compatMode不可用,如何在Safari 3.0.x中检测文档模式?快速结果: 基本上,您创建了一个带有无效css样式的Javascript 如何在Safari 3.0.x中检测怪癖模式?,javascript,safari,quirks-mode,Javascript,Safari,Quirks Mode,Safari 3.0.x不支持document.compatMode属性来检测文档是以标准模式还是以怪癖模式呈现。Safari 3.1和更新版本确实支持它。如果document.compatMode不可用,如何在Safari 3.0.x中检测文档模式?快速结果: 基本上,您创建了一个带有无效css样式的div,该样式只能在怪癖模式下工作。然后检查新的div的样式,查看css是否被接受。如果接受,则文档处于怪癖模式 意译: 我可以帮你测试一下,但我不能运行Safari。如果可以,请测试它,并在评论
div
,该样式只能在怪癖模式下工作。然后检查新的div
的样式,查看css是否被接受。如果接受,则文档处于怪癖模式
意译:
我可以帮你测试一下,但我不能运行Safari。如果可以,请测试它,并在评论中报告结果。大多数较新的浏览器都有
兼容模式,但一些较旧的浏览器没有。这类浏览器包括Mac IE和较旧的网络工具包,如桌面上的Safari 2和许多诺基亚手机
如果存在document.compatMode
,则检查该值是否不是“BackCompat”
。如果是这种情况,则文档处于标准模式。这是IE的早期结果
否则,就没有document.compatMode
,因此它是一个较旧的浏览器,可能支持标准模式渲染,但没有compatMode
属性
如果将元素设置为具有宽度的数值,则文档不处于标准模式
如果您觉得更可读,可以使用if-else
;或者,使用三元赋值
/* 2010-06-26 Garrett Smith - BSD License */
function isQuirksMode(doc) {
doc = doc || document;
var compatMode = doc.compatMode,
testStyle,
IS_STANDARDS_MODE = compatMode ? compatMode != "BackCompat" :
doc.createElement && ((testStyle = doc.createElement("p").style).width = "1",
!testStyle.width);
return !IS_STANDARDS_MODE;
}
/*2010年6月26日Garrett Smith-BSD许可证*/
函数isQuirksMode(doc){
文件=文件| |文件;
var compatMode=doc.compatMode,
测试风格,
是标准模式=兼容模式?兼容模式!=“BackCompat”:
doc.createElement&((testStyle=doc.createElement(“p”).style).width=“1”,
!testStyle.width);
return!是标准模式;
}
这解决了可能存在于世界各国的移动设备(如诺基亚)中的旧Webkit版本
它将在IE5.5及以下版本中返回true。对createElement
的存在性推断检查将在任何具有已损坏的createElement的浏览器上失败(我相信是Opera 5)
避免使用此函数进行一般推断;始终尽可能具体。不好。当IE处于标准模式时,该代码会在IE中产生“BackCompat”。Google文章使用浏览器检测和expandos——显然不好。
/* 2010-06-26 Garrett Smith - BSD License */
function isQuirksMode(doc) {
doc = doc || document;
var compatMode = doc.compatMode,
testStyle,
IS_STANDARDS_MODE = compatMode ? compatMode != "BackCompat" :
doc.createElement && ((testStyle = doc.createElement("p").style).width = "1",
!testStyle.width);
return !IS_STANDARDS_MODE;
}