由於是源自筆記,對每個條目我只會列出稱呼和語法特徵,暫時沒時間寫詳細的解釋和可執行的示例,但是會給出相關的文檔地址,除了列出已經支持該特性的瀏覽器,也會為不支援的瀏覽器提供替代/過渡的實作。好罷這篇本來是我私下做的筆記,我特別喜歡在Evernote上做備忘的筆記,雖然上次看到漏屋老師的文章裡說我現在的年齡才剛進入記憶力的巔峰期…但是我的自信心仍然屢受打擊!例如跟別人討論The Dark Knight裡小丑在醫院對檢察官說了什麼讓他變成雙面人,我一句對白都想不起來,還有big bang theory s2裡penny玩age of conan時的人物名字是「Queen Penelope”,我看的時候印像很深,一個月後就連奧德賽都想不起來了。留份筆記總覺得心裡踏實……啊又離題了
本文整理了一些最重要(或者說人氣比較高罷)的新標準,雖然它們多數還只是w3c的草案,離Recommendation級別還早,卻已經成為新一輪瀏覽器大戰中備受追捧的明星,開發者社群裡也湧現大量相關的demo和API封裝,有些已經進入生產環境(例如google在iphone上實現的gmail離線應用),其實我覺得如今的web領域裡,從廠商私有技術轉換成委員會標準再轉換成通用技術產生殺手級應用的周期已經顯著的加速了,是因為現在web application的需求太高了麼… UPDATE:剛才在solidot發軟文的時候我突然想明白怎麼表述這個問題:其實現在許多瀏覽器廠商同時也是基於瀏覽器的應用開發者和web標準的製定者,就好像修築舞台的工程師同時也是舞台上的演員和舞蹈動作的導演一樣,所以google, mozilla, apple們都在不遺餘力的實現那些有利於開發web應用的技術標準,即時它們還是W3C Working Draft,相比之下IE team就比較缺乏動力,果然計劃經濟缺乏活力亞XD……
由於是源自筆記,對每個條目我只會列出稱呼和語法特徵,暫時沒時間寫詳細的解釋和可執行的示例,但是會給出相關的文檔地址,除了列出已經支持該特性的瀏覽器,也會為不支援的瀏覽器提供替代/過渡的實作。
===================廢話結束的分割線=======================
對整個外鏈css檔案和部分css程式碼使用的媒體類型偵測,人氣高的原因顯然是因為行動裝置…
w3c標準:http://www.w3.org/TR/css3-mediaqueries/
MDC文件:https://developer.mozilla.org/En/CSS/Media_queries
Opera文件:http ://www.opera.com/docs/specs/css/
支援:Firefox 3.5 , Safari 3 , Opera 7
css變形,有人用這個實現偽3d效果以及旋轉效果的jquery插件
MDC文件:https://developer.mozilla.org/En/CSS/CSS_transform_functionswebkit博客的介紹: http://webkit.org/blog/130/css-transforms/
支援:Firefox 3.5 , Safari 3.1
替代/轉換:IE5.5 Matrix Filter http://msdn.microsoft.com/en-us/library/ms533014(VS .85).aspx
CSS3 Transitions and CSS Animations
w3c標準:http://www.w3.org/TR/css3-transitions/
webkit部落格的介紹:http://webkit.org/blog/138/css-animation/同學約翰的介紹:http://ejohn.org/blog/css-animations-and-javascript/
支援:Safari 3.1
CSS3 Downloadable fonts
w3c標準:http://www.w3.org/TR/css3-fonts/#font-resources
MSDN文件:http://msdn.microsoft.com/en-us/library/ms530303( VS.85).aspx
MDC文件:https://developer.mozilla.org/en/CSS/@font-face
支援:Firefox 3.5 , Safari 3.1 , Opera 10.0 , IE4.0
ppk同學維護的文件: http://www.quirksmode.org/css/contents.html
css3.info維護的文件:http://www.css3.info/modules/selector-compat/
一個測驗頁面:http://westciv.com/iphonetests/
簡潔的持久存儲,鍵值對的形式
w3c標準:http://www.w3.org/TR/webstorage/
ppk同學維護的相容性清單:http://www.quirksmode.org/dom/html5.html#localstorage
MDC文件:https://developer.mozilla.org/en/DOM/Storage
MSDN文件:http://msdn.microsoft.com/en-us/library/cc197062(VS.85).aspx
支援:Firefox 3.5 , Safari 4.0 , IE 8.0
用一個manifest檔快取靜態資源(圖片,css, js之類)在離線狀態下使用,不是結構化資料
w3c標準:http://www.w3.org/TR/offline-webapps/#offline
MDC文件:https://developer.mozilla.org/en/Offline_resources_in_Firefox
支援:Firefox 3.5
本地資料庫,支援sql,最早是google gears實現,現在的w3c草案的編輯也是google的工程師…但奇怪的是,gears的api跟現在的草案不相容,chrome甚至為了保留捆綁的gears的資料庫api而刪除了webkit實現的html5 api…而google在iphone上實現gmail離線功能的時候又採用webkit的api…真糾結…
(tx
w3c標準:http://www.w3.org/TR/offline-webapps/#sql
webkit部落格的介紹:http://webkit.org/blog/126/webkit-does-html5- client-side-database-storage/
iphone的文檔:http://developer.apple.com/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase.html#//apple_ref/doc/uid/TPscriptDatabase/UsingtheJavascriptDatabase.html#//apple_ref/doc/uid/TP400072566 -SW1
支援:Safari 3.1
替代/過渡:Gears http://code.google.com/p/gears/wiki/Database2API
多線程,在後台執行複雜運算,不能操作dom,線程之間透過訊息事件通訊
event
.event
.
event
(
str(
🎜>
w3c標準:http://www.w3.org/TR/html5/editing.html#dnd
MDC文件:https://developer.mozilla.org/En/DragDrop/Drag_and_Drop
apple文件:http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/DragAndDrop.html#//apple_ref/doc/uid/30001233
支援:Firefox 3.5 , Safari 2.0 , Chrome 1.0 , IE 5.0
用html標籤來嵌入視頻音頻的好處並非是“開源格式”,而是“開放性”,讓多媒體可以與其他頁面元素交互,或者用頁面技術去跟視頻“mashup”,這種隨意組合和互動的能力是web技術興盛的基石,也是像flash這類封閉RIA容器最大的缺點。
MDC文件:https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox
webkit部落格的介紹:http://webkit.org/blog/140/html5-media-support/
支援:Firefox 3.5 , Safari 3.0 , Chrome 3.0
替代/過渡:用video標籤嵌套embed http://hacks.mozilla.org/2009/06/html5 -video-fallbacks-markup/
apple發明,最早應用於dashboard,目前主流的js圖像技術,mozilla已經在實現OpenGL ES標準的Canvas 3D了,另外據說ie team為支持canvas做了大量工作……實際上canvas api相當底層,特別是互動方面,不如svg直觀,所以出現了很多封裝它的函式庫
ctx
.
closePath
ctx.
fill
()
MDC文件:https://developer.mozilla.org/en/Canvas_tutorial
支援:Firefox 1.5 , Safari 2.0 , Chrome 1.0 , Opera 9.0
替代/過渡:excanvas.js http://code..com/p/explorercanvas/
IBM DW教學:http://www.ibm.com/developerworks/cn/views/xml/tutorials.jsp?cv_doc_id =84896
w3c標準:http://www.w3.org/TR/cors/
MDC文件:https://developer.mozilla.org/En/HTTP_Access_Control
Cross-document Messaging (XDM)
MSDN文件:http://msdn.microsoft.com/en-us/library/cc197057(VS.85).aspx
支援:Firefox 3.5 , IE8.0
Firefox和ActionScript3早就實現了的東西…不過其實實作在json這麼流行,有沒有E4X好像都無所謂了~(瞎說的,其實在js程式碼裡直接寫dom物件而不是html字串,會方便很多)
MDC文件:https://developer.mozilla.org/en/E4X
支援:Firefox 1.5
原生的JSON支持,速度和安全性都比eval強一百倍亞一百倍,另外要注意Douglas Crockford的json2.js是一個用js實現的js解釋器,所以安全性更好
MDC文件:http://blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31/
MSDN文件:http://blogs.msdn.com/ ie/archive/2008/09/10/native-json-in-ie8.aspx
支援:Firefox 3.5 , IE8
替代/過渡:json2.js http://www.json.org/json2.js
js1.6裡實作的陣列方法,主要是forEach, map, fliter這幾個函數式程式設計裡非常重要的方法,還有反向查詢
MDC文件:https://developer.mozilla.org/en/New_in_JavaScript_1.6#Array_extras
支援:Firefox2.0 , Safari 3.0 , Google Chrome 1.0 , Opera 9.5
替代/過渡:都可以透過擴充Array.prototype來模擬
ECMAScript 5 isArray()
支援:無
替代/過渡:Array.isArray = function(a){ return Object.prototype.toString.call(a) === “[object Array] 」;};
用GOOGLE I/O演講裡的話來說:更穩健(robust)的物件系統
約翰同學的解說:http://ejohn.org/blog/objectgetprototypeof/
支援:Firefox3.5
替代/過渡:object.__proto__ 或 object.constructor.prototype
約翰同學的解說:http://ejohn.org/blog/ecmascript-5-objects-and-properties/
支援:無
替代/過渡:Object.create和Object.keys可以自己實現
物件屬性的存取控制
約翰同學的解說:http://ejohn.org/blog/ecmascript-5-objects-and-properties/
支援:無
替代/過渡:Object.defineProperties其實相當於jQuery.extend,用來實現Mixin
python和ruby裡都有的屬性存取方法
>innerHTML
(
,
functionMSDN ドキュメント: http://msdn.microsoft.com/en-us/library/dd229916(VS.85).aspx
サポート: IE8 (DOM でのみ使用可能)
ES5 の厳密モードは、古いバージョンで問題を引き起こす可能性のある要素を削除し、デバッグを容易にするためにエラーを明示的に報告します
代替案/移行: ... 今から本格的なプログラミングの習慣を身につけ始めましょう
ECMAScript 5 のその他の新機能
代替/遷移: プロトタイプ http://www.prototypejs.org/api/function/bind
ISO 形式の日付
代替/移行: datejs http://code.google.com/p/datejs/
サポート: Firefox3.5
代替/移行: さまざまな通常の実装 http://blog.stevenlevithan.com/archives/faster-trim-javascript
===================ナンセンスが再び始まる境界線================= = =====
実は、私はイノベーションの雰囲気を促進し、多くの新技術が「実用」段階に入ったことをより多くの人に知ってもらいたいと願って、このことを投稿しました。
実験的な Web ゲーム、または特定のプラットフォーム (iPhone、greasemonkey など) でのみ使用できるアプリケーションを作成したいだけの場合は、Firefox3.5 Webkit のサポートで十分です。
主流のプラットフォームを無視できない場合は、互換性のあるインターフェイスを実装するために適切に機能を低下させたり、別の方法を選択したりできるテクノロジーが多数あります。
IE を待てない場合は、たとえば、ES5 オブジェクトの継承とアクセス制御が、ES4/ActionScript3 時代の昔ながらのキーワード (クラスは private static を拡張) から Object.create(p 、attrs).defineProperty(o, n, attrs).defineProperties( o, attrs).freeze().getOwnPropertyNames().map(fn)、カッコいいだけではありません...
多くの人は「これまでの人生で HTML5 を使用する機会がなかった」と不満を言いたがりますが、足元の大きな手のひらから目をそらし、他の場所を見れば、世界は実際に変わりつつあることがわかります。いつもXD