【发布时间】:2014-10-06 09:08:13
【问题描述】:
在 html 中,非法标签是如何工作的?请看下面的例子 -
<html>
<body>
<sdbfksbdfksbadfkb>
This is the content!!!
<gft34534534>
</body>
这是显示的内容,即使它的内部非法标签。
【问题讨论】:
在 html 中,非法标签是如何工作的?请看下面的例子 -
<html>
<body>
<sdbfksbdfksbadfkb>
This is the content!!!
<gft34534534>
</body>
这是显示的内容,即使它的内部非法标签。
【问题讨论】:
浏览器被设计为与新版本的 HTML 前向兼容。
无法识别的元素被添加到 DOM(默认为具有最小样式并显示为内联元素)。
这样,使用新版本 HTML 中的新标记不会隐藏旧浏览器中的内容。
【讨论】:
现代浏览器呈现类似于<div> 元素的未知标签,除了使用display: inline 而不是display: block 呈现。这样就可以引入新元素,例如 HTML5 附带的元素,而不会在旧浏览器中崩溃。
旧版本(尤其是 IE)可能会出现问题。但即使是那些也会以某种方式显示它。
【讨论】:
<div> 元素 - 这将暗示 display:block。未知元素默认为inline。
span元素。旧版本的 IE 甚至不允许您设置未定义元素的样式。
浏览器在处理无效标记时通常不会抛出错误消息。这是可以理解的,因为大多数网页都以某种方式无效,因此向用户(无法修复它们)发出错误信号的浏览器不会变得太流行。浏览器可能会在控制台日志中显示一些标记错误(大多数用户不会查看),但似乎大多数情况下只有现代版本的 IE 才会这样做。
HTML5 指定如何处理未知元素。这原则上只是强制错误处理,而不是扩展机制。未知元素被解析并作为节点插入到 DOM 树中,该节点仅具有元素的一般属性,没有默认呈现和默认操作。您仍然可以在其上使用脚本并在其上设置 CSS 样式,但在旧版本的 IE 中,样式是不可能的,除非您首先在脚本中“引入”该元素,并使用类似 document.createElement('sdbfksbdfksbadfkb)` 的调用。
在示例情况下,浏览器将暗示文档末尾缺少结束标记。但是,如果文档正在作为真正的 XHTML 处理(它已使用 XML 内容类型提供服务),则该示例会导致显示错误消息,而根本不显示文档。但这是因为违反了格式良好的约束,因为缺少结束标签,而不是因为未知的元素名称。
【讨论】:
Content-type: application/xhtml+xml 时,看到网站崩溃和烧毁是非常有趣的。