1

tl;dr 版本是为什么不能正确关闭标签的 html 仍然可以正常工作?

我每天都在学习越来越多的 HTML,但我还是个初学者。所以我不明白为什么在没有正确关闭标签的情况下编写糟糕的 HTML 仍然有效。我在工作中使用电子邮件模板来完成一项任务,并且对它背后的 HTML 感到好奇,所以我将代码加载到编辑器中。

我遇到了 9 个不关闭<td> <center> <div> <p> <div> <td> <tr> tbody> <table>的单独标签:代码以<html>应有的标签开头,但在and<body>之后,它开始另一组标签。在这两个标签中,他们都说同样的事情并且有一个额外的右大括号。<table><tr><html> <head>... etc<style>li { margin-bottom: 10px; } }

当我将这段代码加载到我的浏览器中时,页面仍然可以直观地显示它应该如何。但在 Firebug 中,在第一个 body 标记之后,它会跳过 table、tr、html、head 和 body,直接显示第一个<div>.

<html>为什么缺少关闭标签、额外标签和标签等的网页(因为我确信这一定是一件很常见的事情)<body>仍然能够正常运行?

4

2 回答 2

1

我认为这是鲁棒性原则的应用。

在你所做的事情上保持保守,在你从别人那里接受的事情上保持自由

我认为这是竞争浏览器环境中不可避免的结果。如果 HTML 错误阻止站点在浏览器 A 中运行,但浏览器 B 能够猜出更正,则用户将倾向于使用浏览器 B,因为 A 似乎已损坏。从 Netscape 3 或更早版本开始,这种情况就一直存在。

于 2015-10-23T18:34:34.553 回答
1

格式错误的 HTML 无法正常工作 - 浏览器尝试猜测 HTML 结构的意图并显示猜测的结果。这是一个不幸的决定的结果,即允许显示格式不佳的 HTML,而不是拒绝它并迫使作者修复此类问题。

当您在屏幕上看到格式错误的 HTML 看起来正确时,这并不是正确行为的结果:它是浏览器的幸运猜测的结果(显然,通过猜测来解决一个小问题比通过猜测解决一个巨大的结构问题更容易)跨越整个 HTML 结构)。

它归结为将 HTML 视为内容(它不是),而不是一种正式的语言(它是):内容作者曾经(并且现在)被认为是非技术人员,并强迫他们解决“内容”问题太难的要求。

于 2015-10-23T18:44:23.480 回答