我想发表评论(<!-- this --> style) 位于 HTML 代码的最顶部,位于 DOCTYPE 声明之前。这符合标准吗?主流浏览器都支持吗?这样做有什么陷阱吗?

有帮助吗?

解决方案

编写的 <!DOCTYPE> 第一肯定是最佳实践。

我记得奇怪的问题很长,很久以前这里的一些浏览器(可能是IE6)忽略 <!DOCTYPE> ,因为有一些貌似无辜的前 - 我认为只是空格,但也许这是一个评论。在任何情况下,这是一个可怕的,可怕的错误有追查,并有肯定从来没有任何充分的理由之前有意见或空白的 <!DOCTYPE>

编写的 <!DOCTYPE> 第一个是,我会说,只是一些经验丰富的网络开发者如何避免可怕的,难以理解的错误。

其他提示

有的完全有效以做

<!-- this, -->
<!DOCTYPE html>

<强>然而,它带来的迫使所有版本的IE到的怪异模式(除非它是 成没有-quirks模式 - 看到陷阱下面一节)。最简单的是移动DOCTYPE下面的评论。

<!DOCTYPE html>
<!-- this, -->

但是,另一种方法是将“升级” 入评合适的条件 的评论,诸如这样的:

<!--[if !IE]> this <![endif]-->
<!DOCTYPE html>

说明: 条件的意见并不计数为注释,在IE的世界

替代语法::要忘记/记住,有条件的意见是微软侵入HTML标准,人们可以例如做

<!--[if anybrowser]> this <![endif]-->
<!DOCTYPE html>

同样地,在特定的目标即,一个可以做

<!--[if !anybrowser]> this <![endif]-->
<!DOCTYPE html>

<强>陷阱

一个评论条件注释会带来IE成怪异模式如果IE看到它(即:如果一个使用一个<强> [如果IE] 条件,或等效为[如果IE] - 如在 [如果anybrowser!] 条件是我上面提到的)。因此,举例来说,这将带来IE在怪异模式:

<![if IE]><!-- this --><![endif]>
<!DOCTYPE html>

如将

<!--[if IE]><!--><!-- this <![endif]-->
<!DOCTYPE html>

和许多其它变体。而例如

<!--[if IE]><!DOCTYPE html><!--><!-- this <![endif]-->
<!DOCTYPE html>

会的的原因怪癖模式,因为的这里的条件评论面前的其他 的内容的DOCTYPE的 ,从而IE认为该页面的第一内容是一个DOCTYPE。

最后,最新的IE版本, IE8和IE9 ,可以是被迫到标准模式(和怪异模式以及)通过使用另一个Microsoft的发明 - 的 X-UA-兼容指令。见 http://msdn.microsoft.com/en-us/library/ cc288325(v = vs.85)的.aspx 在这种情况下,然后

<!-- this -->
<!DOCTYPE html>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->

将的 IE8和IE9成无怪癖模式,而IE6和IE7将保持在怪异模式。而与此相反,的

<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
<!DOCTYPE html>

IE8和IE9为标准模式,尽管的条件注释的内容没有的的开始与DOCTYPE。与IE6和IE7也将保持在无怪癖模式,因为条件注释不针对他们。

虽然这是每个我相信标准容许,你肯定想避免它,因为它会扔IE进入怪癖模式。

(参见触发不同的渲染模式

根据说法,这可能会导致 IE7 以怪异模式呈现,就好像文档类型根本不存在一样 这一页.

文档类型之前的评论是允许的,但造成的所有 IE的版本恢复到怪异模式。他们是,实际上,用于该目的的时候。 XML声明(<?xml version ...?>)具有相同的效果,在IE6和下面

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