JavaScript编程全解1.5 JavaScript 实现方式_JavaScript编程全解1.5 JavaScript 实现方式试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > JavaScript编程全解 > 1.5 JavaScript 实现方式

JavaScript编程全解——1.5 JavaScript 实现方式

表1.3 列出了搭载了JavaScript 引擎的具有代表性的浏览器。虽说这几年给每个版本附上一个开发代号的做法很流行,不过在这里还是使用各自的通称。 表1.3 浏览器和JavaScript 实现方式 客户端JavaScript 代码的可移植性 JavaScript 编程中有一个很麻烦的问题,即在不同的浏览器中其执行方式会有所不同。1.2 节中曾提到JavaScript 早期的评价并不太好,其中一个很重要的原因就是,JavaScript 在不同的浏览器中的执行方式的确会有差别。许多开发者怨声不断,逐渐造成了一种JavaScript 编程非常麻烦的印象。但如果冷静下来思考一下,就会发现JavaScript 其实并没有所说的那么夸张。 稍加了解就会发现,C/C++ 等其他一些语言,和如今的JavaScript 一样,都衍生出了多种不同的实现方式①。它们虽然在遵循语言标准时,能够实现一定程度的可移植性,但对于不同平台(OS)的情况,其可移植性完全无法令人满意。PHP、Perl、Python、Ruby 等流行的脚本语言虽然在不同平台间也有着很高的可移植性,但这是因为它们基本上只有唯一一种实现方式。Java 确实有多种实现方式,也实现了很强的可移植性,不过这是由于它最初就在保证可移植性上花费了很大的精力,所以算是一个例外。把JavaScript 和Java 作对比来得出其可移植性不强未免有些不妥。 影响客户端JavaScript 可移植性的原因主要有两点。 JavaScript语言实现方式的不同 渲染引擎的差别(DOM或是CSS 的解释不同) -------------------------------------------------- ①  不过,C++ 的支持者们持有不同意见。由于本书只关注JavaScript,所以对此不做深究。 在实际中,后者更为麻烦,并由此产生了许多不良开发方式。要解决JavaScript 语言实现方式差异的关键在于ECMAScript,因为ECMAScript 作为一种标准,有明确的规定。现在大多数有名的JavaScript实现都基于ECMAScript 标准,所以只要书写符 合ECMAScript 标准的代码,就能够在很大程度上提高可移植性。 另一方面,渲染引擎没有像程序设计语言一样被标准化,所以相当难办。不过有一个被称为Acid 的测试,可以用于减少这一不同引擎之间执行方式不同的问题。 http://www.webstardards.org/action/acid3/ Acid 并不像ECMAScript 那样有明确标准,它会对浏览器进行特定测试,根据返回的结果是否相同来判断代码的执行情况。该测试可以用于判断JavaScript、DOM、CSS 等各种客户端JavaScript 的执行情况。现在很多的浏览器都以符合Acid 标准(即可以通过Acid 测试)为目标。在执笔本书时,Acid 的版本号为3。用浏览器登录下面的URL 地址就能够获得测试得分: http://acid3.acidtests.org/ 刚刚已经介绍了有关客户端JavaScript 可移植性改进的内容。很可惜,情况尚不乐观。首先是浏览器版本陈旧的问题。之前提到的ECMAScript 标准以及Acid 测试标准都是基于最新版本的浏览器的。如果需要支持旧版本的浏览器,则仍然要注意执行方式上的差异。另一个问题是对PC 之外的设备的支持。如今的智能手机、平板电脑以及智能电视,原本就有着不同的用户界面。虽说客户端JavaScript 的可移植性确实在逐渐提高,但如果考虑到现在越来越普及的非PC 设备的情况,可以说现在正处于一种过去未曾有过的混乱状态。所幸非PC 设备的渲染引擎基本上被WebKit 所垄断,总算使问题稍有缓解。

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《JavaScript编程全解》其他试读目录

• 1.1 JavaScript 概要
• 1.2 JavaScript 的历史
• 1.3 ECMAScript
• 1.4 JavaScript 的版本
• 1.5 JavaScript 实现方式 [当前]
• 1.6 JavaScript 运行环境
• 1.7 JavaScript 相关环境