if (typeof localStorage === 'object') {
在從江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,從江網(wǎng)站建設(shè)費用合理。
try?{
localStorage.setItem('localStorage',?1);
localStorage.removeItem('localStorage');
}?catch?(e)?{
Storage.prototype._setItem?=?Storage.prototype.setItem;
Storage.prototype.setItem?=?function()?{};
alert('Your?web?browser?does?not?support?storing?settings?locally.?In?Safari,?the?most?common?cause?of?this?is?using?"Private?Browsing?Mode".?Some?settings?may?not?save?or?some?features?may?not?work?properly?for?you.');
}
}
不是所有的蘋果設(shè)備都不支持Flash,所以你指的應(yīng)該是iOS吧。當時的官方說法,主要是緣于當時Flash播放器過于耗電,不適合移動設(shè)備。考慮到當時經(jīng)常會有打開了Flash網(wǎng)頁時的筆記本電腦(尤其是非Windows系統(tǒng))發(fā)熱顯著上升的體驗,這點可以算是事實。由于大多數(shù)門戶網(wǎng)站都內(nèi)嵌了Flash廣告,因而瀏覽網(wǎng)頁時的確很有可能會顯著消耗電池電量。相比之下,HTML5的視頻播放由于實現(xiàn)時較有效利用了硬件資源,所以能耗方面可以優(yōu)化,而類似于Flash的矢量動畫,雖說用HTML5實現(xiàn)不見得能提升多少性能(如果不是降得更低),但畢竟HTML5的頁面廣告幾乎沒有,所以砍掉Flash的確有可能大幅減少網(wǎng)頁瀏覽時的CPU計算量。既有的Flash應(yīng)用通?;谑髽藙幼鳎瑢τ|摸支持不夠好。這也是另一官方的理由。安全性:內(nèi)置Flash支持意味著有可能引入相關(guān)的安全漏洞,而Flash實現(xiàn)由Adobe掌控,一旦出現(xiàn)問題,蘋果難以直接把握。另外,較為流行的非官方觀點:基于Flash平臺的應(yīng)用非常豐富,很有可能威脅到蘋果自家的AppStore:假如大家都上網(wǎng)玩兒免費的Flash版的游戲去了,就不會再去買AppStore上的同類產(chǎn)品,蘋果也就分不到錢了。
我們和其他人一樣,對于前不久蘋果iOS 8的發(fā)布感到十分激動。在做這個測試的時候,我們手中只有iOS 8 GA版,但我們想最快的將測試結(jié)果提供給全球的web開發(fā)者,所以這個測試結(jié)果和iOS 8正式版的結(jié)果有所出入并不出奇,但是現(xiàn)在我們只想盡快的將benchmark和各種測試跑起來,并且分享我們發(fā)現(xiàn)的結(jié)果。
本文記錄了在iOS 8成為蘋果設(shè)備基準的現(xiàn)在,對其進行了當前版本HTML5的性能測試結(jié)果,和測試發(fā)現(xiàn)的技術(shù)問題。
iOS 8新特性將促進HTML5開發(fā)
讓我們先來看看升級iOS 8的一些新特性。
這些特性對促進HTML5開發(fā)很有幫助,我們挑選出其中重要的幾條:
WebGL 3D Graphics
3D圖形的硬件加速支持,對web開發(fā)者來說這無疑是一個非常重要的特性。我們很想看到這條特性在游戲中有更多的應(yīng)用,不過它還有更多的其它用法,特別是在動畫和變換的領(lǐng)域里。想快速了解它能干什么,點擊 WebGL Sprite Particle Demo
CSS Shapes
能夠控制文字層的形狀,來形成更為多變的文字布局。
HTML模板
Web組件的基礎(chǔ)元素之一。它讓我們離真正的Web模塊化和更多潛在應(yīng)用又近了一步,我們將更少的依賴polyfill。
導(dǎo)航/更精確的計時API
多數(shù)人可能用不到,但對于測試來說是非常贊的特性。
IndexedDB
HTML5的Web SQL標準已不再維護并很可能在將來被廢棄,使用IndexedDB將擁有很好的跨平臺支持(iOS、Android、Chrome for Android、Safari、IE移動版等)。
SVG片段標示符
這個特性隱藏在神秘的名字下面,但相信我們,它是一個非常強大的特性。它能構(gòu)建非常強大的向量化精靈表。這不僅在web游戲中非常重要,在動態(tài)圖標和其他動態(tài)UI組件里也非常重要。
作為移動web開發(fā)者,你可能已經(jīng)習慣于以最新瀏覽器特性為目標而開發(fā)了,我們知道蘋果的升級系統(tǒng)能讓iOS 8迅速普及,如果你的應(yīng)用專門為iOS而開發(fā),那么你現(xiàn)在就能利用像IndexedDB、SVG片段標示符等新特性了。如果你想兼容iOS 7或者進行跨平臺開發(fā),你能使用Sencha Touch內(nèi)建的系統(tǒng)探測來利用這些特性。Sencha Touch讓你能現(xiàn)在就使用這些新特性并逐步的淘汰舊代碼。
全新的WKWebView
隨著iOS 8的發(fā)布,我們同時痛并快樂著,因為iOS 8帶來了一些碎片化的問題。iOS 8里面內(nèi)建了兩個原生的webview,第一個是我們知道并喜愛的UIWebView,它因為兼容性而保留下來,但幸運的是,蘋果并沒有簡單的將舊iOS 7 UIWebView裝進iOS 8里,而是升級了WebKit核心模塊并發(fā)布了全新的WKWebView。WKWebView將被hybrid app所使用。它使用了Nitro JS引擎,經(jīng)我們測試至少比UIWebView的性能高四倍。這將很有可能引領(lǐng)hybrid app獲得巨大成功。不過,目前它還有一些影響所有人的重大bug,下面我們將談到這一點。
不過好消息是從Web開發(fā)的遠景看來,全新的高性能WKWebView向著正確的方向走了一大步。即使現(xiàn)在Javascript已經(jīng)很少成為應(yīng)用瓶頸,更典型的問題是動畫和DOM重繪上,我們相信隨著對DOM核心的實質(zhì)化的改進,WKWebView將幫助Sencha Touch應(yīng)用在性能上看到巨大的改進。
性能的全面提升
對版本升級的性能測試總是必要的,并且這一次我們發(fā)現(xiàn)了一些更有趣的結(jié)果??傮w上來說,升級到iOS 8看上去對所有用戶都有利的。這里有一些指標在iOS 8里稍微下降了,如Base64和代碼調(diào)用。讓我們來仔細的分析一下這些圖表,來弄清楚它們都代表什么。
注意:所有測試都在第5代iPod Touch上進行,旨在找出iOS開發(fā)所需要面臨的性能下限。
這些測試里只有CodeLoad指標iOS 8的表現(xiàn)略低,CodeLoad是評價JS引擎在加載非常大的JS文件后需要花多長時間開始運行,這對于Closure和jQuery這樣的庫來說是需要引起注意的。
實際的測試表現(xiàn)比圖表上的還要好,Dom Query的巨大提升掩蓋了其他幾項其實也是提升很大的,其中Attributes提升122%、Modification提升65%、Dom Traversal提升48%,而Dom Query的提升則是驚人的308%。
CSS選擇器的測試,iOS 8也獲得了全面的提升,Ext JS在簡單的移到iOS 8 Safari之后即獲得126%的時間提升。
需要注意的是CSS選擇器使用的是Ext JS 3.x版本,而現(xiàn)在Ext JS 5.x版本已經(jīng)發(fā)布,所以獲得的提升還要更大。
這里Base64和Code Eval性能表現(xiàn)有了微小的下降,不過就像前面所說的,相對于對于JS引擎的效率來說,GPU合成才是更值得關(guān)注的,而且其他幾項的提升也都非常大。
這個測試結(jié)果已無需多說,它表明iOS 8在Canvas方面有非常大的改進。
注意這個測試時iOS 8里面兩個webview之間測試,WKWebView全面勝出。
Sunspider測試的結(jié)果相差不大。
HTML5測試表明了iOS 8在HTML5支持方面也有了明顯提升,我們來簡單的分析一下其中的重要結(jié)果:
· 無縫的iFrame從iOS 8里面移除
· IndexedDB被添加到iOS 8 Safari和WKWebView中
· IndexedDB目前不支持iOS 8 UIWebView和Homescreen app(設(shè)置主屏快捷方式的web app)
· Objectstore ArrayBuffer已經(jīng)在iOS 8 Safari和WKWebView中生效(但是HTML5測試沒能測出來,要不然測試得分將達到440分)
· Objectstore ArrayBuffer不支持iOS 8 UIWebView和Homescreen app
· WebGL 3D Graphics被添加到iOS 8 Safari、WKWebView、UIWebView和Homescreen app中
· UIWebView、WKWebView和Homescreen app的userAgent是完全一致的
盡管蘋果為了保持WKWebView、UIWebView和Homescreen app有同一水平的可用性而做了不少工作,但其中的差異仍然造成了一些困擾,由于三者的userAgent是一樣的,開發(fā)者需要自己去標示這三者并小心的使用新特性。
Bug說明
我們都知道沒有軟件的發(fā)布沒有伴隨著bug的,iOS 8也不例外。經(jīng)過探索我們發(fā)現(xiàn)了3個主要問題,將影響大多數(shù)HTML5開發(fā)者。
WKWebView 無法加載本地文件
測試中WKWebView無法讀取本地文件,這讓使用PhoneGap/Cordova開發(fā),能提供離線功能的應(yīng)用失去了用武之地。比如,它不能加載本地的index.html,但訪問Web網(wǎng)站的功能是好的。
XHR本地文件訪問
在WKWebView中XHR無法將本地文件發(fā)送到Web,比如使用AJAX來提交系統(tǒng)圖庫中的圖片將出現(xiàn)錯誤。
Homescreen app在鎖定/喚醒后失去計時功能
WKWebView中Homescreen app在鎖定喚醒之后帶計時功能的函數(shù)將失效,如setTimeout、requestAnimationFrame等。
不過好消息是這些Bug僅影響WKWebView應(yīng)用,如果使用iOS 8 UIWebView則不會受到影響。
即將到來
總之,我們非常高興的看到iOS 8的發(fā)布,以及蘋果在iOS 8上表明的對HTML5的態(tài)度,因為性能改進和新特性將極大的提升用戶在iOS 8上使用Web App的體驗。
Source: caniuse.com
如果我們看得更遠的話,我們會發(fā)現(xiàn)iOS 8和Chrome for Android在一些卓越的新特性上有許多交叉,Chrome for Android其實已經(jīng)部分的支持了WebGL 3D Graphics但一些舊的機型沒有能力來驅(qū)動它。
總結(jié)
對Web開發(fā)者來說,iOS 8無疑是一個令人激動的發(fā)布,它擁有激動人心的新特性和重大的性能改進,將極大的促進HTML5跨平臺開發(fā)。
關(guān)于蘋果不支持flash,而是用html5是有多方面原因的。
首先是在于flash本身上。
1、adobe公司的實力自然沒必要多講,flash當年在PC端的實力也是無可匹敵。
2、隨著智能手機的發(fā)展,也意圖在這一領(lǐng)域立足,但是即使是現(xiàn)在的移動設(shè)備來說,其對于cpu和gpu的占用量依然很大,功耗自然也大。到后期flash也主動放棄了移動端的市場。
3、相比于PC端的體驗,就算是對于支持了flash安卓手機來講,所謂的用戶體驗也不會好到哪里。
4、不過對于移動端的使用,不只是flash,html5也是應(yīng)用甚少。html就當是來言和flash相差很多,對于功耗上的減少也沒有優(yōu)化很多,加上各種漏洞,所以html的優(yōu)勢在當是也無從提起。但是總體上來說開放html5是時代的產(chǎn)物,封閉的flash自然慘遭淘汰。
就上面的東西接著說,說到根本上其實還是利益問題。
1、adobe公司將flash打造成一種自己的APP平臺和廣告平臺。而蘋果自身也建立了基于app store的一種封閉的營收模式,兩者自然是利益沖突。
2、跨平臺的應(yīng)用也將打破原生應(yīng)用的用于體驗。
3、如果說喬布斯看中的是html5的發(fā)展前景也可以,app store和html5分管了應(yīng)用程序和動畫視頻,也確實沒有必要再用flash。
4、此外,出于對蘋果系統(tǒng)安全的考慮也是一方面的原因。
HTML5的Audio標簽,目前的主流瀏覽器都支持,只不過各種瀏覽器對音頻的支持的格式不同,當前,audio 元素支持三種音頻格式:
IE 9 ? ? ? ? ? ? ? ?支持 ?MP3
Firefox 3.5 ? ? 支持 ?Ogg Vorbis、Wav
Opera 10.5 ? ?支持 ?Ogg Vorbis、Wav
Chrome 3.0 ? 支持 ?Ogg Vorbis、MP3
Safari 3.0 ? ? ? 支持 ?MP3、Wav
html5標簽audio的autoplay屬性可以設(shè)置在頁面打開后自動播放。這個屬性本來挺好的。但是最近做了一個項目卻發(fā)現(xiàn)在iphone上無法自動播放。
各種查閱資料后發(fā)現(xiàn)原來iphone公司是考慮到用戶可能是用手機流量訪問的情況,為了用戶流量著想,所以需要用戶交互后才能播放。雖然蘋果公司是出于好心,但是如果網(wǎng)頁打開之后還需要一個交互才能聽到美妙的背景音樂,那么網(wǎng)站的體驗效果自然差了很多??墒沁@種問題要怎么解決呢?
冥思苦想了很久,終于做了一個艱難的決定。于是乎就這樣嘗試了一下:
$(function(){
$("#audio")[0].play();?
})
沒想到竟然好用?。?!
全部的代碼是這樣
html
head
script src="js/jquery.js"/script
/head
body
audio id="audio" src="song.mp3" autoplay="autoplay"
您的瀏覽器不支持audio標簽。
/audio
$(function(){
$("#audio")[0].play();
})
/body
/html