1
444
XHTML 1规格说明: С.3. Element Minimization and Empty Element Content
XHTML DTD 指定脚本标记为:
|
2
220
为了增加Brad和Squadette所说的内容,可以使用自关闭的XML语法
但是,发送XML mimetype将导致IE7无法解析您的页面,而IE7只喜欢
从 w3 :
几个月前我对此感到困惑,唯一可行的(与ff3+和ie7兼容)解决方案是使用旧的
如果服务器发送
不管你怎么摆弄,这都会发生。
|
3
145
如果有人好奇的话,最终的原因是HTML最初是SGML的一种方言,这是XML奇怪的哥哥。在sgml-land中,标记可以在dtd中指定为自动关闭(例如br、hr、input)、隐式可关闭(例如p、li、td)或显式可关闭(例如table、div、script)。XML当然没有这个概念。 现代浏览器使用的标签汤解析器是从这个遗留下来的,尽管它们的解析模型不再是纯粹的SGML。当然,精心设计的XHTML将被视为写得很糟糕的SGML灵感标签汤,除非您使用XML MIME类型发送它。这也是为什么…
…被浏览器解释为:
…这是一个可爱的、晦涩难懂的bug的配方,当您试图对DOM进行编码时,它会让您陷入困境。 |
4
136
其他人回答了“如何”并引用了规范。这里是“为什么不”的真实故事。
HTML 4 HTML 4基于 SGML .
SGML有一些
shorttags
,如
但是,HTML没有被重新定义,所以
显然,这与XHTML不兼容,并且 将 打破许多网站(当浏览器足够成熟时 to care about this 如此 nobody implemented shorttags 以及规格 advises against them . 实际上,所有“工作”的自结束标记在技术上不一致的解析器上都是带有可选结束标记的标记,实际上是无效的。 是W3C came up with this hack 通过创建XHTML来帮助转换为XHTML HTML-compatible .
和
“self-ending”标签在HTML4中是一种黑客行为,毫无意义。 HTML 5 HTML5 five types of tags 只有“作废”和“外国”标签 allowed to be self-closing .
因为
但是为什么呢?难道他们不能把它看作是外来的、特例的或是什么吗?
HTML 5的目标是
backward-compatible
具有
实现方式
HTML 4和XHTML 1。
它不是基于SGML或XML的;它的语法主要与实现的文档化和统一有关。
(这就是为什么
自动关闭
This was discussed 当HTML 5被起草并被拒绝时,因为它 breaks browser compatibility . 在旧浏览器中,自关闭脚本标记的网页可能无法正确呈现(如果有的话)。 有 other proposals 但是它们也不能解决兼容性问题。 在发布草稿之后,WebKit更新了解析器以使其符合要求。
自动关闭
XHTML 1/XHTML 5
什么时候?
真的?
作为XHTML,
除了那个 the spec says 它 应该 作为HTML使用时有效:
那么,发生了什么? 人 asked Mozilla 到 let Firefox parse 合格文件 XHTML 无论指定的内容头(称为 content sniffing ) 这将允许自动关闭脚本和内容嗅探 was necessary 不管怎样,因为网络主机还不够成熟,不能提供正确的报头;即 good at it .
如果
first browser war
并没有以IE6结尾,XHTML可能也在列表中。但它确实结束了。IE 6
has a problem
使用XHTML。
事实上
did not support
正确的mime类型
at all
强迫
每个人
使用
还有内容嗅探 can be really bad 人们都在说 it should be stopped .
最后,结果是W3C
didn't mean XHTML to be sniffable
:文档是
二者都
,HTML和XHTML,以及
不管怎样,这个决定 settled the matter 对于火狐。 7年前铬 was born 没有其他重要的浏览器。于是决定了。 由于以下规范,仅指定doctype不会触发XML分析。 |
5
44
Internet Explorer 8及更早版本不支持XHTML分析。即使使用XML声明和/或XHTML doctype,旧的IE仍然将文档解析为纯HTML。在纯HTML中,不支持自动关闭语法。尾随斜杠被忽略,必须使用显式结束标记。 即使是支持XHTML解析的浏览器,例如 IE 9 and later ,将仍然以HTML形式分析文档,除非您为文档提供XML内容类型。但在这种情况下,旧的IE根本不会显示文档! |
6
26
上面的人已经很好地解释了这个问题,但是有一件事可以让事情变得清楚,尽管人们使用
|
7
23
自关闭脚本标记将不起作用,因为脚本标记可以包含内联代码,并且HTML不够智能,无法基于属性的存在打开或关闭该功能。
如果您希望脚本标记是自封闭的,那么您不能像我所说的那样做,但是有一个可选的,尽管不是智能的。您可以使用自动关闭的链接标记,并通过将文本/javascript和rel类型作为脚本链接到您的javascript,如下所示:
|
8
20
与XML和XHTML不同,HTML不了解自动关闭语法。将XHTML解释为HTML的浏览器不知道
正如
|
9
19
Internet Explorer 8及更高版本不支持XHTML的正确MIME类型,
XML“short form”被解释为名为/的属性,该属性(因为没有等号)被解释为隐式值为“/”。这在HTML4.01中是完全错误的-不允许使用未声明的属性-但是浏览器会忽略它。
IE9及以后
support XHTML 5
服侍
|
10
5
这是因为脚本标记不是空元素。在一个 HTML文档 空隙元素 不 需要一个“结束标签”!
在
XHTML
,所有东西都是通用的,因此它们都需要
终止
例如,“结束标记”;包括br,简单的换行符,如
但是,脚本元素绝不是空元素或参数元素,因为 脚本标记 除此之外,还有一条浏览器指令,而不是数据描述声明。 原则上,语义终止指令(例如,“结束标记”)仅用于处理语义不能由后续标记终止的指令。例如:
这就是“终止”信号的发明方式和原因。
通用的
没有描述
终端标签
这就是如何
概念
容器的诞生。(这些概念如此相似,以至于无法辨别,有时相同的元素可能两者都有。
DIV元素实际上是一个2BR容器。当然,CSS的出现使整个情况比原本的情况更为奇怪,并导致了巨大的混乱,并产生了许多巨大的后果——间接的! 因为有了CSS,您可以很容易地覆盖一个新发明的DIV的本机pre&after-br行为,它通常被称为“不做任何事情的容器”。这当然是错误的!div是块元素,在结束信号发送之前和之后都会本地中断流的行。很快,网络就开始遭受页面分割的痛苦。他们中的大多数仍然是。 CSS的出现及其完全重写和重新定义任何HTML标记的本机行为的能力,以某种方式设法混淆和模糊了HTML存在的全部意义… 突然间,所有的HTML标签都显得过时了,它们被破坏了,失去了所有的原始含义、身份和目的。不知怎么的,你会觉得他们不再需要了。说:一个容器包装标签就足以满足所有的数据表示。只需添加所需的属性。为什么不换个有意义的标签呢;边走边发明标签名,让CSS来处理其余的问题。 XHTML就是这样诞生的,当然,它是一个生硬的东西,新来者付出了如此高昂的代价,它扭曲了人们对什么是什么,以及它的目的到底是什么的看法。W3C从万维网走向了哪里,同志们?!!! HTML的目的是 流 向人类接收者提供有意义的数据。 传递信息。 正式部分仅用于帮助信息传递的清晰性。 XHTML对这些信息没有丝毫的考虑。-对它来说,信息是完全无关的。 最重要的是了解并能够理解 XHTML不仅仅是某些扩展HTML的一个版本 ,xhtml是一种完全不同的野兽;会搁浅;因此 把它们分开是明智的。 |
11
3
“true-xhtml”、“faux-xhtml”和html之间的区别以及服务器发送的mime类型的重要性是 already described here well . 如果您现在想尝试一下,这里有一个简单的可编辑片段,带有实时预览功能,包括适用于功能强大的浏览器的自关闭脚本标记:
你应该看看
对于不能使用的浏览器,可以复制文本区域的内容并将其保存为
|
Error 1004 · 使用VBA从HTML中提取信息 6 年前 |
myroslav · IE11中Angular 4应用程序崩溃 6 年前 |
sankar · IE不显示abbr标记的边框底部 6 年前 |