html - 网页可以成为 future 的证明吗?

标签 html css standards doctype

<分区>

我明白 <!DOCTYPE html>使浏览器以标准模式呈现页面,但这并不能阻止您的页面在 HTML 6 出现时中断。

与其让标准如此通用,不如让他们在您的页面顶部明确指定您所针对的标准版本?而不是 <!DOCTYPE html> , 做类似 <!DOCTYPE html=5> 的事情这样当 future 的浏览器出现 HTML 6 时,他们会看到 <!DOCTYPE html=5> 行他们知道这个页面不了解 HTML 6 标准,所以为了保证页面不会崩溃,浏览器回退到 HTML 5 标准。

这就像一种向后兼容的方法,因此您今天编写的页面可以保证工作数十年。当然,你不应该等几十年才更新你的页面,但至少你知道它不会在新版本标准出来的那一刻就崩溃,同时你的页面支持旧浏览器而无需更改一行 HTML .

为什么事情不是这样?这种方法有什么问题?

最佳答案

I understand that <!DOCTYPE html> makes the browser render the page in standards mode, but that does not prevent your page from breaking when say, HTML 6 comes out.

是的,确实如此。 HTML 的添加旨在向后兼容,以便浏览器不会开始错误地呈现旧页面。

Instead of making standards so generic, why don't they make it so that at the top of your page you explicitly specify the version of the standard you're targeting?

尽管出于不同的原因(HTML 被设计为 SGML 应用程序,但浏览器并未如此实现),他们尝试了这一点。 HTML 5 之前的每个 HTML 和 XHTML 版本都这样做。浏览器不区分版本(只区分怪癖/几乎标准/标准模式,所有这些都对 CSS 和 DOM 的处理影响远大于 HTML)。大多数作者没有编写与他们使用的 Doctype 相匹配的代码。

如果浏览器看到它无法识别的 Doctype,应该怎么办?它可以拒绝呈现页面(这对用户一点帮助都没有),也可以尝试尽可能地呈现它(这就是它所做的)。

如果浏览器发现文档类型不支持文档中的元素,它应该怎么办?它可以忽略它们(这对任何人都没有帮助),抛出错误(这可以帮助开发人员,但前提是开发人员在市场上最严格的浏览器中进行测试,否则只会伤害用户),或者渲染它们尽其所能(这就是它所做的)。

Doctype Switching 和 Quirks 模式的重点不是支持为旧版 HTML 设计的网页,而是为为早期的、漏洞百出的浏览器设计的网页。

如今,浏览器设计得更好,测试也更严格,而且它们的作者更擅长为新的 HTML/CSS/DOM 功能编写规范,为它们创建测试套件并拥有该功能的多个实现(在不同的浏览器中) ) 在它们公开之前,没有前缀的实现没有锁定在浏览器深处的配置选项后面。这极大地减少了随着浏览器更新而可能损坏的东西的数量,因此他们不需要保持向后兼容的重大新错误。

they know that this page has no idea about the HTML 6 standards, so to guarantee that the page will not break, the browser falls back to HTML 5 standards.

请参阅上面的向后兼容性。

关于html - 网页可以成为 future 的证明吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21054940/

相关文章:

html - CSS3 动画填充模式属性

javascript - Angular $animate 和指令行为不正常

html - 如何选择放置在未知级别的元素

java - PDF核心(Type1)字体下载?

c++ - 为什么 C++ 不支持堆栈上的动态数组?

javascript - 将图像置于 div 的中心,文本位于右侧

javascript - jquery 中包含另一个溢出元素的元素

javascript - 选择不同的选项卡时,如何使 CSS Accordion 折叠?

html - 如何包含 css 父编号 html?

c++ - 如何以正确的方式编写代码内注释和文档?这有什么标准吗?