Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Safari 3.0.x中检测怪癖模式?_Javascript_Safari_Quirks Mode - Fatal编程技术网

Javascript 如何在Safari 3.0.x中检测怪癖模式?

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。如果可以,请测试它,并在评论

Safari 3.0.x不支持document.compatMode属性来检测文档是以标准模式还是以怪癖模式呈现。Safari 3.1和更新版本确实支持它。如果document.compatMode不可用,如何在Safari 3.0.x中检测文档模式?

快速结果:

基本上,您创建了一个带有无效css样式的
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; }