假设您有一个页面具有相对严格的文档类型和HTML标记非常接近合规,但可能会以一些愚蠢的方式错过,可能是因为用户内容超出了您的控制...说您正在工作在内容管理系统或内容管理系统的主题上,您可以控制一些基本结构并需要一些javascript,但是您不对其他所有内容负责。

当浏览器决定进入“怪癖”时,你如何判断(或:将决定什么)?模式而不是使用它更符合标准的引擎?

我正在为每个主流浏览器寻找答案,因为IE,Chrome,Safari和Firefox当然都会以不同的方式处理。是一个单一的错误足以迫使它还是你有一些余地?

有帮助吗?

解决方案

Firefox和Opera 中,您可以确定您的浏览器是否处于“quirks模式”状态。通过检查页面信息。

使用 document.compatMode ,会告诉您大多数浏览器的模式。

Chrome,Safari和IE 中,在地址栏中运行此javascript:

 javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')

(请注意,由于最近的安全性更改,您需要在粘贴到地址栏后重新输入 javascript:部分)

其他提示

由于您可以在JavaScript中查询渲染模式,因此可以使用此渲染模式书签这适合我:

javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');

对你的实际具体问题的完整答案是“一个单一的错误是否足以迫使它或你是否有一些回旋余地?”是完全取决于错误。例如,

<!-- Comment -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

将强制IE 6&amp; 7尽管没有真正出现错误(当文件的第一行不是声明时,它们只是完全摇摆不定)。 可以在此处找到快速的类型/怪癖列表

尝试在HTML中粘贴以下行以进行测试(非常糟糕的javascript行为我在这里传递 - 抱歉...确保它永远不会生效:)

<a href="javascript:alert(document.compatMode);">What mode am I?</a>

根据 http://www.quirksmode.org/css/quirksmode.html: “问题是,一些以怪癖模式编写的页面确实有doctypes。因此,每个浏览器都有自己的列表,其中包含触发怪癖模式的文档类型。有关这些列表的概述,请参阅此浏览器比较图表: http://hsivonen.iki.fi/doctype/ &QUOT;

希望这有帮助

如果你告诉IE它应该是严格的(通过doctype),它不会在页面的中途改变主意。

如果我正确理解了怪癖模式,那么不会对其声明的doctype进行验证的页面不足以触发怪癖模式。它只是无法正确显示。

我找到的用于确定不同浏览器如何处理每种文档类型的最佳资源是此处

对于添加了Web Developer Toolbar的Firefox,您可以查看栏右侧的三个图标。最左边的一个告诉你你处于什么模式。

在IE中,您将在开发人员工具中看到它(按F12),它在菜单中显示:文档模式:... 你也可以在那里强制使用不同的模式。

在html5页面中,写上“&lt;!DOCTYPE html&gt; ”从页面开始可以更改为 document.compatMode = 'CSS1Compat'

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top