Web 浏览器对看似格式错误的文件的容忍度

Web Browser's Tolerance of Seemingly Malformed files

本文关键字:错误 文件 容忍度 格式 浏览器 Web      更新时间:2023-09-26

浏览器对在我看来是"格式错误"的代码的容忍是什么?相比之下,传统的编程语言非常不能容忍看似微不足道的错误(例如,缺少";",ANSI C文件末尾的换行符,忘记在Java中导入ArrayList,没有左手赋值的行"5;"(?

我所说的明显格式错误的代码是什么意思

前几天我用JSP生成HTML页面,当查看输出时,我想"哇,那个表格看起来很糟糕,最好设置它。 所以我转到.jsp文件,查找<表>标签,查找<表>标签,然后......。它不在那里。有头的,tr的,td的,tfoot的,但没有桌子包裹它们。

来自其他编程语言(.NET语言,C,Java,Ocaml等(的想法,我的Web浏览器,所有常见的Web浏览器,接受损坏的html仍然让我感到惊讶。我可以理解它这样做的一些情况,例如,如果它无法识别尖端的新实验性HTML9标签。但我仍然在努力理解为什么浏览器会接受 HTML、CSS 或 Javascript 中的错误,比如定义表外的行或调用未定义的函数。在 ANSI C 中,如果我忘记了文件末尾的换行符,编译器会在编译失败之前对我尖叫至少两次!然而,Chrome、IE和Mozilla似乎让HTML、CSS和Javascript逍遥法外。

Rhumborl写道:"基本上不存在的标准向后兼容",这很简单,但确实如此。

维基百科关于网络浏览器历史的概述文章在总结了浏览器大战之后说:

战争将网络交到了数百万普通PC用户的手中,但表明了网络的商业化如何阻碍标准的努力。Microsoft和Netscape都在其产品中自由地加入了HTML的专有扩展,并试图通过产品差异化获得优势,导致W3C接受了Håkon Wium Lie提出的级联样式表,而不是Netscape的JavaScript样式表(JSSS(。

简而言之,各种浏览器供应商都试图遵循拥抱和扩展的策略,每个供应商在广泛使用后立即采用其他浏览器的新功能,然后添加自己的"改进"。 只有随着Silverlight的失败和HTML5的兴起,我们才能看到这个时代的明确结束。