【问题标题】:HTML illegal tags does not error outHTML 非法标签不会出错
【发布时间】:2014-10-06 09:08:13
【问题描述】:

在 html 中,非法标签是如何工作的?请看下面的例子 -

<html>
<body>
<sdbfksbdfksbadfkb>
This is the content!!!
<gft34534534>
</body>

这是显示的内容,即使它的内部非法标签。

【问题讨论】:

    标签: html tags


    【解决方案1】:

    浏览器被设计为与新版本的 HTML 前向兼容。

    无法识别的元素被添加到 DOM(默认为具有最小样式并显示为内联元素)。

    这样,使用新版本 HTML 中的新标记不会隐藏旧浏览器中的内容。

    【讨论】:

      【解决方案2】:

      现代浏览器呈现类似于&lt;div&gt; 元素的未知标签,除了使用display: inline 而不是display: block 呈现。这样就可以引入新元素,例如 HTML5 附带的元素,而不会在旧浏览器中崩溃。

      旧版本(尤其是 IE)可能会出现问题。但即使是那些也会以某种方式显示它。

      【讨论】:

      • 不,特别是 NOT&lt;div&gt; 元素 - 这将暗示 display:block。未知元素默认为inline
      • 是的,你是对的。但这是唯一的区别不是吗?
      • 所以你应该说它们就像span元素。旧版本的 IE 甚至不允许您设置未定义元素的样式。
      【解决方案3】:

      浏览器在处理无效标记时通常不会抛出错误消息。这是可以理解的,因为大多数网页都以某种方式无效,因此向用户(无法修复它们)发出错误信号的浏览器不会变得太流行。浏览器可能会在控制台日志中显示一些标记错误(大多数用户不会查看),但似乎大多数情况下只有现代版本的 IE 才会这样做。

      HTML5 指定如何处理未知元素。这原则上只是强制错误处理,而不是扩展机制。未知元素被解析并作为节点插入到 DOM 树中,该节点仅具有元素的一般属性,没有默认呈现和默认操作。您仍然可以在其上使用脚本并在其上设置 CSS 样式,但在旧版本的 IE 中,样式是不可能的,除非您首先在脚本中“引入”该元素,并使用类似 document.createElement('sdbfksbdfksbadfkb)` 的调用。

      在示例情况下,浏览器将暗示文档末尾缺少结束标记。但是,如果文档正在作为真正的 XHTML 处理(它已使用 XML 内容类型提供服务),则该示例会导致显示错误消息,而根本不显示文档。但这是因为违反了格式良好的约束,因为缺少结束标签,而不是因为未知的元素名称。

      【讨论】:

      • 至于您的第一行:这正是 XHTML 失败的原因,因为当您按照标准要求开始发送 Content-type: application/xhtml+xml 时,看到网站崩溃和烧毁是非常有趣的。
      • @NielsKeurentjes,XHTML 并没有真正失败,只是围绕它的炒作没有理由将其用作网页的交付格式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      相关资源
      最近更新 更多