本节书摘来自异步社区《JavaScript设计与开发新思维》一书中的第1章,第1.6节,作者:【美】Larry Ullman著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.6 JavaScript版本和浏览器支持
我们已经说明过,JavaScript的核心来自于ECMAScript,ECMAScript在2009年推出了最新的第5版。JavaScript的当前版本是基于ECMAScript 5的1.8.5版本,于2010年7月推出。但是在JavaScript中编程时,版本的问题不如“在什么浏览器中可能发生什么情况”那么重要。大部分现代浏览器都支持ECMAScript 3和ECMAScript 5的一部分(ECMAScript 的版本4从未正式发布)。
“现代浏览器”是你在本书和其他地方常见的词语。粗略地说,现代浏览器支持核心JavaScript、DOM操纵、XmlHttpRequest对象(用于发出Ajax请求)以及基本的CSS。大体上,现代浏览器能够利用当今大部分动态Web技术。这一宽泛的定义包括大部分版本的Firefox、Chrome、Opera和Safari以及IE 6之后的Internet Explorer版本(IE 6多年来已经成为Web开发人员的死敌)。
注意,“现代浏览器”这一宽泛的定义并不只是针对JavaScript所下的,还基于其他先进的功能,例如执行DOM操纵的能力。JavaScript常常用来操纵DOM,但是DOM由W3C管理,不同的浏览器也以不同的方式支持DOM,这意味着在创建动态网站时,考虑的因素不仅是JavaScript支持的差异,还有DOM支持和CSS支持的差异。(如果你选择了HTML5,还有HTML5支持的差异)。
2011年8月1日,Google决定支持更有限的一系列现代浏览器(这里指的是对Web应用的支持,Google搜索引擎当然可以在任何浏览器中使用)。Google的条件很简单—Chrome、Firefox、IE和Safari的当前版本和前一个版本。一方面,这种方法排除了相当一部分Web用户和一些在其他场合被当作“现代”的浏览器。另一方面,这种方法明确了新版本浏览器中的变化,而且,放弃旧的版本也有好的理由—用户也应该不断更新他们的浏览器。
但是,作为一名JavaScript程序员,这些列表对你来说意味着什么呢?知道不同浏览器的不同版本所能做的事情对你有很好的启发,但是并不是JavaScript编程的基础。10年以前,当时还没有这么多种浏览器,JavaScript代码曾经专门用来检查浏览器类型和版本(见前面的代码):是Internet Explorer还是Netscape Navigator?是版本4还是5或者5.5?由于实际上有数千种不同的浏览器类型和版本(考虑到移动设备),不可能以特定的浏览器和版本为目标。而且,由于许多不同的原因,浏览器可能错误地标识自己。即使你能克服这两个负担,这些代码也将在新浏览器的下一次发布、新浏览器版本或者具备内部浏览器的新设备推出时过时。
在现在的现代JavaScript中,代码不为浏览器而为浏览器的“能力”而编写。这一差别看似细微,实际上却非常重要,是现代JavaScript编程基础的一部分。在本书中,你将学到许多编程技术,这些技术所着眼的是“浏览器可能做什么”,而不是“所运行的是什么浏览器”。同样,在开发代码之后,你仍然应该在一定范围(比如Yahoo!或者Google的列表中)的浏览器上进行测试。记住,一个正确设计的网站在不支持的浏览器中仍然应该保持完整的功能,只是不能利用JavaScript和其他现代化工具(例如CSS3和HTML5)所添加的动态功能而已。