本节书摘来自异步社区《HTML5和JavaScript Web应用开发》一书中的第2章,第2.2节,作者:【美】Wesley Hales著,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.2 决定支持
基于目前移动领域的局面,我们必须支持多种平台和浏览器。当你使用HTML5的核心API时,你就被绑定到目标设备所支持的特性上,所以理解当今的移动浏览器及其发展方向至关重要。
编写跨越所有平台和浏览器的Web应用是一个很大的工程。以前,Web应用开发人员不关心桌面电脑是否连接了摄像头或者加速计,Web应用和操作系统及桌面硬件的能力也没有关系。现在,移动Web为我们构建的应用增加了另一方面的支持,浏览器和设备的分裂也令人兴奋,我们现在必须创建兼容不同浏览器、平台和设备的应用。例如,Android 2.1版本中基于WebKit的浏览器支持Web Workers,后来的2.2、3.0和4.0版本禁用了这一支持,而在4.1版本中,Web Workers支持经过修改又回来了。
这就是我所说的另一方面的支持,或者叫做“分裂”。我们不仅要支持浏览器,还要支持浏览器所绑定的操作系统。
下面将解释不同的移动浏览器,讨论每种设备共同支持的API,并确定可以用来构建稳定的企业移动Web应用的核心功能集。
移动Web浏览器
花一点时间研究各种移动浏览器和各自的社区。作为开发人员,我们必须尝试接受所有平台,开发跨越如下浏览器的应用程序——如果有必要,还应该支持更多浏览器。例如,你的用户不应该被限制在一个仅支持WebKit的移动应用上,因为这种应用的代码只能运行于iOS和Android。
1.WebKit
WebKit是Mobile Safari、Android和Chrome等采用的浏览器引擎。这一开源项目不断推动开放Web的发展,适应刚刚发布的最新W3C规范。最近,用户对WebKit的兴趣有了爆炸性的增长,这可以归功于它驱动了许多领先的移动平台浏览器。
图2-1展示了源代码修订版本(垂直)和当时的功能(水平)。图中的一些图标代表与WebKit关联的产品,所处位置表示该产品流行的时代。
Mobile Safari(iOS6):Apple对早期HTML5规范的应用和实现令人印象深刻,该公司明显成为推动Web前进的动力。利用标准的硬件和多核技术,iPhone和iPad已经成为杰出的HTML5开发平台。但是,iOS的世界里并不都是美好的景象,每个移动浏览器都有其缺陷。早期的iOS版本因为有JavaScript的 innerHTML()相关的一个缺陷,迫使开发人员考虑新的动态内容插入方法。你将在下一章中看到这个问题的解决方案,而现在我们关注的是全局。
Apple围绕iOS发展的社区处理和缺陷提交受到了Apple行事风格的束缚。你可以用缺陷报告提交缺陷,但只能搜索自己提交的问题,但Apple允许来自客户的非机密数据公开搜索。
Android:尽管Android的默认浏览器基于WebKit,但截至本书写作时,它对HTML5规范的实现在第4版中才开始加强。随着Android的发展,我们确信HTML5将实现和其社区一起发展。但是,目前Android设备的分裂现象非常严重,HTML5支持在不同的设备和OS版本。
至于Android的未来,更新的Dolphin浏览器有希望在浏览器技术上取得重大进展:
- 比默认的Android浏览器快5~10倍;
- 比Chrome快一倍(有些时候);
- 在有名的测试网站上测试时得到了450分,如图2-2所示。
2.Mobile Firefox
Mozilla已经出现了一段时间,而且比以前更重视社区和Web的推进。在本书编写的时候,Mobile Firefox在HTML5实现水平上排行第三(见图2-3),胜过了Mobile Safari(iOS)。
随着移动Web的不断发展,宝座之争还将持续——这是好事。我们希望竞争和标准的进步。Mozilla对于移动Web的革新并不陌生,它推出了野心勃勃的新项目WebAPI。这个项目是一组API,用于访问通常只能被原生应用访问的设备功能。总的来说,它是一个基于HTML、CSS和JavaScript的移动设备操作系统。这是推进Web的一项举措,使得开发人员可以一次性地为所有移动操作系统编写Web应用。图2-4展示了B2G的Gaia UI屏幕截图。
3.Opera Mobile
Opera有两种不同的手机浏览器:Opera Mobile和Opera Mini,在Opera Mini中,Opera Presto浏览器引擎在服务器上,而Opera Mobile中安装在手机上。目前,Opera Mini占据了大部分市场份额,但是对于企业HTML5应用,Opera Mobile支持我们所需的核心规范,如Web Storage、WebWorkers和Geolocation。
4.Internet Explorer Mobile
Windows Phone 7.5配备了一个Internet Explorer Mobile版本,它的渲染引擎(即内核)基于Internet Explorer 9。所以,说明Windows Phone支持功能的最简单方法就是:它支持IE 9所支持的功能,包括Web Storage和Geolocation。
更有甚者,Windows Phone 8支持Internet Explorer 10,而它包含了对HTML5特性如WebSocket、Web Workers、Application Cache和IndexedDB的更好支持。