百科问答小站 logo
百科问答小站 font logo



HTML、CSS、JavaScript 为什么不加个标明运行版本号的语法? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

有版本号啊……

这个是HTML的:


这个是JS的:


就CSS没有,结果搞出一地鸡毛,也就是所谓的Quirk Mode……


所以,CSS就是那群不懂编程的搞设计的家伙搞出来的怪异的玩意儿,给互联网带来无尽的灾难……


user avatar   catchen 网友的相关建议: 
      

因为要兼容,新浏览器要兼容十几年不更新代码的网站,新网站要兼容 IE6。你给网站使用的语言加了版本号,那遇到不支持这个版本的客户端怎么办呢?

你先别着急思考这个问题,你先去研究一下过去二十年浏览器和网站都是怎样围绕这个问题演化的,然后你就知道答案了。

大多数网站,都不愿意放弃兼容任何一个能给自己带来显著流量的浏览器;大多数浏览器,都不敢说自己不兼容任何一个主流网站。这时候双方都无法向前迈步。

网站显然不可能先升级到更高的语言版本号,因为没有浏览器支持。浏览器先升级到更高级的语言版本号后,要如何说服网站升级呢?叫网站同时维护两个版本,分别用不同的语言版本号,然后根据浏览器版本来决定返回哪个语言版本?大多数网站都没有功夫给你手工维护两个版本,如果只维护一个版本的话,这个版本必须兼容升级前的浏览器。那这升级怎么进行?

这时候只有一个办法进行升级,就是同一个版本支持不同的浏览器。这个版本通过条件判断,遇到高级语言版本就做一件事情,遇到低级语言版本就做另外一件事情。但问题是,语言版本号一定是全序的吗?语言版本号保证不是偏序的?偏序的例子是,2.0 并不保证比所有的 1.x 都高级,2.0 在 1.5 之后发布,但后来又发布了 1.5.1 补丁,引入了 2.0 没有的功能。

如果语言版本号不保证是全序的,那根据语言版本号大小来判断做什么事情就会出错。现实中,浏览器发布新功能的顺序确实不是全序的,不同浏览器按照不同的顺序添加新的语言功能,根本不可能做出一个单调递增的语言版本号来。

这件事情不是没试过,大家曾经想着等 HTML5 定型了再开始设计 HTML6,等 CSS3 定型了再开始设计 CSS4。但因为某个版本是否定型是一个多方协商的结果,根本无法有效地推进。没有人希望再像 HTML4 一样,一拖拖个十年都无法决定下一个版本是什么样子的,新功能还是要要照常迭代的,唯一的出路就是大家各干各的,谁做出来什么新功能都可以发布。这意味全序版本号不可能实现。

因为版本号不能是全序的,所以这些语言不使用语言版本号。最后网站唯一能做的事情,就是不去想语言版本号这件事情,对自己需要用到的具体功能逐一侦测,侦测到有就做一件事情,否则就做另一件事情。




  

相关话题

  为什么childNote.length获取不到body标签的最后一个#text? 
  为什么尤大说react的性能不如vue? 
  为什么 JS 不能绕过后端代码直接调数据库,有哪些后端处理的逻辑,JS 不能写? 
  Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么? 
  为什么try catch能捕捉await后promise错误? 和执行栈有关系吗? 
  如何在程序里留下彩蛋? 
  用 Git 一定要用命令行吗?用命令行一定高贵吗? 
  为什么childNote.length获取不到body标签的最后一个#text? 
  为什么说js中的array不是真array,class不是真class? 
  在asp.net mvc的视图文件(.cshtml)中引用外部文件? 

前一个讨论
临近过年了,领导突然告诉我让我写涨薪申请,可是前一段时间我主动去提的时候还给我画大饼。这次是怎么了?
下一个讨论
如何让192.168.0.0网段和192.168.3.0网段网络主机互通?





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利