本節書摘來自異步社群《html5和javascript web應用開發》一書中的第2章,第2.2節,作者:【美】wesley hales著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
基于目前移動領域的局面,我們必須支援多種平台和浏覽器。當你使用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的更好支援。