最近同时在使用FireFox和IE这两款浏览器浏览网页,以FireFox为主。最近一周在上网的时候关注到FireFox和IE解析HTML的两点不同之处。
一是对空格符的处理。按照HTML的标准,空格字符是 。在FireFox中,如果你误写成 (少了一个分号)一定不会被FireFox认为是空格,FireFox会认为它是 。而在IE中,如果你误写成 (少了一个分号)IE智能地认为它是空格。
二是对注释的处理。按照HTML的标准,注释的操作是放在<!--和-->之间的,而且注释中不能有--,否则会产生HTML解析错误。如果你把一段注释写成<!--2000年--2002年,在北京工作-->,在FireFox中,FireFox会机械地认为该段注释内容为2000年,而IE则会智能地认为这段注释内容为2000年--2002年,在北京工作。
FireFox对HTML的解析尽量严肃地按照HTML标准来行事,而IE则大量地加入了智能分析手段。哪一种更好?看上去IE做得更好,但我不这样想。严肃一点的做事方式是需要的,也并不会更复杂。严肃一点能够让我们的生活更顺利一点。例如我们在提交申请文档的时候,如果不按照申请标准来,我们的申请文档很可能就是无效的;报税的时候,如果我们不按照标准表格来填写,就会让税务部门的工作人员感到迷惑,最终造成的损失很可能还是我们自己承担。
的确,IE的处理方式能够让我们比较轻松地编写网页,不必在意微小的错误。但是,这种智能化让人们做网页的时候犯了错误,却仍然不知道自己已经犯了错误,因为你犯的错误已经被IE智能地解析了,IE也不会告诉你你写的网页犯了错误。这样,人们就把错误当成正确来理解了。相当数量的网页都存在各种各样的错误,但是这些错误都被IE的智能解析给掩盖了,连很多技术人员都不知道自己写的HTML代码其实是有错误的。我写了多年的网页,却也是直到最近一周才知道标准的HTML中注释里面是不能有--的,因为以前我主要用IE,而IE从来不告诉我这一点。我看到很多网页编写人员犯各种错误,并且他们自己并不知道他们的做法是错误的。这些问题不少时候都要怪罪于微软。
IE的这种做法对于用户看上去是方便了,但是却是以损害技术标准的规范为代价的。也许这也是为什么微软不喜欢使用标准的JavaScript等规范的原因之一。微软有自己单独的处理问题的规范,而这些规范都是把用户当成傻子,以把用户培养成傻子为目标的。