我了解<!DOCTYPE html>
使浏览器以标准模式呈现页面,但这并不会阻止您的页面在HTML 6出现时中断。
不要让标准如此通用,为什么他们不这样做,以便在页面顶部明确指定您要定位的标准版本?不要使用<!DOCTYPE html>
,而是执行类似<!DOCTYPE html=5>
的操作,这样当未来的浏览器出现HTML 6时,他们会看到行<!DOCTYPE html=5>
,他们知道此页面不知道HTML 6标准,所以为了保证页面不会破坏,浏览器会回退到HTML 5标准。
这就像是一种向后兼容性方法,因此您今天编写的页面可以保证工作数十年。当然,您不应该等待数十年来更新您的页面,但至少您知道它不会打破标准的新版本出现的那一刻,同时您的页面支持旧版浏览器而不更改一行HTML 。
为什么不是这样的事情?这种方法有什么问题?
答案 0 :(得分:6)
我了解
<!DOCTYPE html>
使浏览器以标准模式呈现页面,但这并不会阻止您的页面在HTML 6出现时中断。
是的,确实如此。对HTML的添加旨在向后兼容,以便浏览器不会错误地开始渲染旧页面。
为什么不让标准如此通用,为什么不这样做,以便在页面顶部明确指定您要定位的标准版本?
他们试过这个,虽然出于不同的原因(HTML被设计为SGML应用程序,但浏览器没有这样实现)。 HTML 5之前的每个HTML和XHTML版本都是这样做的。浏览器没有区分版本(仅在怪癖/几乎标准/标准模式之间,所有这些模式对HTML和DOM的处理的影响远远超过HTML )。大多数作者没有编写代码来匹配他们使用的Doctype。
如果浏览器看到它无法识别的Doctype,应该做什么?它可以拒绝呈现页面(它根本不会帮助用户),也可以尝试尽可能地呈现它(这就是它的作用)。
如果浏览器看到不支持文档中的元素的Doctype,应该做什么?它可以忽略它们(这对任何人都没有帮助),抛出一个错误(这可以帮助开发人员,但只有当开发人员在市场上限制最多的浏览器中测试,否则它只会伤害用户),或者渲染它们尽可能好(这就是它的作用)。
Doctype Switching和Quirks模式的重点不是支持为旧版HTML设计的网页,而是支持针对早期极其错误的浏览器设计的网页。
今天,浏览器设计得更好,测试更严格,他们的作者更好地编写新的HTML / CSS / DOM功能规范,为他们创建测试套件并具有多个功能实现(在不同的浏览器中) )在它们公开之前,没有固定的实现,并没有锁定在浏览器内部的配置选项后面。这大大减少了随着浏览器更新而可能破坏的事物的数量,因此没有重要的新错误需要保持向后兼容。
他们知道这个页面不知道HTML 6标准,所以为了保证页面不会中断,浏览器会回归到HTML 5标准。
见上面的向后兼容性。
答案 1 :(得分:1)
HTML内容本身是否“具有未来性”并不重要,因为这仍然无法启用/纠正未来浏览器中可能存在的增强/更改功能。浏览器开发人员确实需要确保他们的更改是向后兼容的。国际海事组织,我们现在应该按照你想要的方式行事5年,这是不合理的。
如果该网站被认为是重要的,它将不断发展以保持合理的最新状态。