Successfully reported this slideshow.

Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011

37

Share

Upcoming SlideShare
Echo HTML5
Echo HTML5
Loading in …3
×
1 of 130
1 of 130

Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011

37

Share

Download to read offline

  1. Brave new world of HTML5 NEW SEMANTICS, MULTIMEDIA AND MORE Patrick H. Lauke / Interlink Conference / Vancouver / 4 June 2011
  2. Web Evangelist at Opera
  3. ...should I use HTML5 today?
  4. www.textfiles.com/underconstruction
  5. "there is already a lot of excitement for HTML5, but it’s a little too early to deploy it because we’re running into interoperability issues." Philippe Le Hegaret, W3C interaction domain leader blogs.techrepublic.com.com/hiner/?p=6369
  6. http://www.flickr.com/photos/24374884@N08/4603715307/
  7. NATIVE HTML5
  8. HTML5…without the hype?
  9. A brief history of HTML5 1999 HTML 4.01 2000 XHTML 1.0
  10. 2004 W3C focus on XHTML 2.0 …the future is XML-based! http://www.flickr.com/photos/craiga/17071467/
  11. WHATWG Web Hypertext Application Technology Working Group
  12. 2007 W3C HTML5 WG
  13. HTML5 does not replace HTML 4.01 / XHTML 1.0
  14. HTML5 has more bling!
  15. “...extending the language to better support Web applications [...] This puts HTML in direct competition with other technologies[...] , in particular Flash and Silverlight.” Ian Hickson, Editor of HTML5 http://lists.w3.org/Archives/Public/public-html/2009Jan/0215.html
  16. HTML4.01 primarily defined markup elements
  17. HTML5 supercedes HTML 4.01, XHTML 1.0 and DOM Level 2 HTML
  18. HTML5 adds/redefines markup elements
  19. HTML5 aimed at browser devs detailed algorithms for processing/error correction
  20. <b><i>Yo!</b></i>
  21. software.hixie.ch/utilities/js/live-dom-viewer/
  22. 1. syntax/semantics 2. forms 3. multimedia
  23. 1. syntax/semantics 2. forms 3. multimedia
  24. the dirty secret of the doctype
  25. HTML5 <!DOCTYPE html>
  26. <meta charset=”utf-8” /> <meta charset=utf-8> <MeTa CHarSet=utf-8>
  27. <style type=”text/css”> </style> <script type=”text/javascript”> </script>
  28. <style type=”text/css”> </style> <script type=”text/javascript”> </script>
  29. <!doctype html> <title>Minimal HTML5</title>
  30. new elements for more accurate semantics
  31. Top 20 class names 1. footer 11. button 2. menu 12. main 3. style1 13. style3 4. msonormal 14. small 5. text 15. nav 6. content 16. clear 7. title 17. search 8. style2 18. style4 9. header 19. logo 10. copyright 20. body http://devfiles.myopera.com/articles/572/classlist-url.htm
  32. Top 20 id names 1. footer 11. search 2. content 12. nav 3. header 13. wrapper 4. logo 14. top 5. container 15. table2 6. main 16. layer2 7. table1 17. sidebar 8. menu 18. image1 9. layer1 19. banner 10. autonumber1 20. navigation http://devfiles.myopera.com/articles/572/idlist-url.htm
  33. html5doctor.com
  34. unambiguous and machine readable
  35. current and old browsers “support” these (although some need a little extra help) header, footer, … { display: block; }
  36. Internet Explorer < 9 needs extra training wheels document.createElement('header'); document.createElement('footer'); … http://html5doctor.com/how-to-get-html5-working-in-ie-and-firefox-2
  37. 1. syntax/semantics 2. forms 3. multimedia
  38. improved form elements because the web is more interactive
  39. jqueryui.com
  40. rich form elements without JavaScript <input type="date"> <input type="time"> <input type="month"> <input type="week"> <input type="datetime" … > <input type="range"> <input type="number"> <input type="color"> <input type="file" multiple> <input … placeholder="…"> <input … autofocus> <input … autocomplete>
  41. built-in validation without JavaScript <input … required> <input type="tel"> <input type="email"> <input type="url"> <input … pattern="[a-z]{3}[0-9]{3}"> <input type="number" min="1" max="10" step="2"> …
  42. people.opera.com/patrickl/experiments/forms/newtypes.html
  43. people.opera.com/patrickl/experiments/forms/validation.html
  44. validity checking with JavaScript form.checkValidity() formelement.checkValidity() formelement.setCustomValidity() formelement.validity interface ValidityState { readonly attribute boolean valueMissing; readonly attribute boolean typeMismatch; readonly attribute boolean patternMismatch; readonly attribute boolean tooLong; readonly attribute boolean rangeUnderflow; readonly attribute boolean rangeOverflow; readonly attribute boolean stepMismatch; readonly attribute boolean customError; readonly attribute boolean valid; };
  45. 1. syntax/semantics 2. forms 3. multimedia
  46. making your site Fonzie compliant...
  47. <video>
  48. Adobe Flash currently most common video delivery mechanism
  49. <object width="425" height="344"> <param name="movie" value="http://www.youtube.com/v/9sEI1AUFJKw&hl=en &fs=1&"></param> <param name="allowFullScreen" value="true"></param> <param name="allowscriptaccess" value="always"></param> <embed src="http://www.youtube.com/v/9sEI1AUFJKw&hl=en&f s=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed> </object>
  50. <video src="video.webm"></video>
  51. <video src="video.webm" controls autoplay loop preload="none" poster="poster.jpg" width="320" height="240"> <a href="video.webm">Download movie</a> </video>
  52. video as native object ● behaves like any other HTML element ● keyboard accessibility out-of-the-box
  53. people.opera.com/patrickl/experiments/video/hover+transition
  54. powerful (simple) API
  55. icant.co.uk/easy-youtube
  56. controlling <video> with JavaScript var v = document.getElementById('player'); v.play(); v.pause(); v.volume = … ; v.currentTime = … ; …
  57. events fired by <video> var v = document.getElementById('player'); v.addEventListener('loadeddata', function() { … }, true) v.addEventListener('play', function() { … }, true) v.addEventListener('pause', function() { … }, true) v.addEventListener('timeupdate', function() { … }, true) v.addEventListener('ended', function() { … }, true) …
  58. people.opera.com/patrickl/experiments/webm/basic-controls
  59. people.opera.com/patrickl/experiments/webm/fancy-controls
  60. people.opera.com/patrickl/experiments/webm/fancy-swap
  61. HTML5 means all your old dHTML is cool again!
  62. video formats the big debate?
  63. HTML5 does not specify video container/codec (same as with images in HTML 4.01)
  64. MP4/H.264 or Ogg Theora or WebM/VP8
  65. MP4 / H.264 ubiquitous, patent encumbered, licensing/royalties
  66. Ogg Theora free and open, no licensing fees not many tools for it, not web optimised
  67. WebM / VP8 open and royalty-free, web-optimised support by hardware and software vendors
  68. providing multiple sources <video controls autoplay poster="…" width="…" height="…"> <source src="movie.mp4" type="video/mp4" /> <source src="movie.webm" type="video/webm" /> <source src="movie.ogv" type="video/ogg" /> <!-- fallback content --> </video>
  69. www.ffmpeg.org
  70. www.mirovideoconverter.com
  71. flash fallback for older browsers http://camendesign.com/code/video_for_everybody
  72. <video controls autoplay poster="…" width="…" height="…"> <source src="movie.mp4" type="video/mp4" /> <source src="movie.webm" type="video/webm" /> <source src="movie.ogv" type="video/ogg" /> <object width="…" height="…" type="application/x- shockwave-flash" data="player.swf"> <param name="movie" value="player.swf" /> <param name="flashvars" value=" … file=movie.mp4" /> <!-- fallback content --> </object> </video>
  73. <audio>
  74. audio...exactly the same as video <audio src=”music.mp3” controls autoplay … ></audio> <audio controls autoplay> <source src="music.mp3" type="audio/mpeg" /> <source src="music.oga" type="audio/ogg" /> <!-- fallback content --> </audio> formats: MP3 vs Ogg Vorbis (vs WAV)
  75. people.opera.com/patrickl/experiments/audio/wilhelm
  76. people.opera.com/patrickl/experiments/audio/windchime
  77. <canvas>
  78. canvas = “scriptable images” <canvas width="…" height="…"></canvas>
  79. canvas has standard API methods for drawing ctx = canvas.getContext("2d"); ctx.fillRect(x, y, width, height); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x, y); ctx.bezierCurveTo(x1, y1, x2, y2, c1, c2); www.w3.org/TR/2dcontext
  80. people.opera.com/patrickl/experiments/canvas/particle/3
  81. mariuswatz.com/works/abstract01js
  82. canvas drawing ready-made images ctx = canvas.getContext("2d"); var logo = new Image(); logo.src = 'logo.png'; ctx.drawImage(logo,x1,y1,w1,h1,x2,y2,w2,h2); or call in an existing image already on the page
  83. www.splintered.co.uk/experiments/archives/paranoid_0.3
  84. canvas access to image data array ctx = canvas.getContext("2d"); canvasData = ctx.getImageData(x,y,w,h); [R,G,B,A,R,G,B,A,R,G,B,A,R,G,B,A, … ]
  85. www.splintered.co.uk/experiments/archives/canvas-ambilight
  86. github.com/mezzoblue/PaintbrushJS
  87. canvas also works with video ctx = canvas.getContext("2d"); v = document.getElementById('player'); ctx.drawImage(v,x1,y1,w1,h2,x2,y2,w2,h2); grab currently displayed frame (update as appropriate)
  88. html5doctor.com/video-canvas-magic
  89. media.chikuyonok.ru/ambilight
  90. canvas accessibility?
  91. video, audio and canvas on any device without plugins (Java / Flash / Silverlight not ubiquitous)
  92. 1. syntax/semantics 2. forms 3. multimedia 4. … and more
  93. HTML5 (and friends) has lots more APIs for developers (for powerful client-side apps)
  94. geolocation navigator.geolocation.getCurrentPosition(success, error); navigator.geolocation.watchCurrentPosition(success, error); function success(position) { /* where's Wally? */ var lat = position.coords.latitude; var long = position.coords.longitude; ... } www.w3.org/TR/geolocation-API
  95. offline detection window.addEventListener('online', function(){ … }, true); window.addEventListener('offline', function(){ … }, true); …however, currently unreliable!
  96. application cache <html manifest=”blah.manifest”> CACHE MANIFEST # send this with correct text/cache-manifest MIME images/sprites.png scripts/common.js scripts/jquery.js styles/global.css NETWORK: # never cached (apart from normal caching mechanism) onlineonly.css FALLBACK: # pattern matching. fallback file will also be cached images/ images/not-offline.png
  97. data storage cookies and their limitations... document.cookie = 'key=value; expires=Thu, 15 Feb 2010 23:59:59 UTC; path=/' … /* convoluted string operations go here … */
  98. localStorage/sessionStorage localStorage.setItem(key, value); localStorage.getItem(key); localStorage.clear(); localStorage.key = value; if (localStorage.key == '…') { … } … localStorage – persistent per domain sessionStorage – current URL and window in session only string data – store serialised objects
  99. WebSQL relational DB / SQL in browser var db = openDatabase(dbName, version, displayName, expectedSize); db.transaction(function(tx) { tx.executeSql(sqlStatement, [], function (tx, result) { /* do something with the results */ }); }); not being developed further (IE/Mozilla prefer IndexedDB) – nonetheless available right now in Opera+WebKit!
  100. etc File API, Web Workers, History API, Web Messaging, Drag and Drop, Server-Sent Events…
  101. is it all safe to use, right now?
  102. www.youtube.com/html5
  103. caniuse.com
  104. don't do browser sniffing http://www.flickr.com/photos/timdorr/2096272747/
  105. feature-detection progressive enhancement, graceful degradation http://diveintohtml5.org/everything.html
  106. feature-detection for audio/video if (!!document.createElement('video').canPlayType;) { … } if (!!document.createElement('audio').canPlayType;) { … }
  107. feature-detection for audio/video codecs var v = document.createElement('video'); if (!!(v.canPlayType)&& ((v.canPlayType('video/webm;codecs="vp8,vorbis"') == 'probably') || (v.canPlayType('video/webm;codecs="vp8, vorbis"') == 'maybe'))) { … }
  108. modernizr.com
  109. patching older browsers github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
  110. yepnopejs.com
  111. sublimevideo.net
  112. www.happyworm.com/jquery/jplayer
  113. HTML5 as Flashkiller?
  114. not a question of HTML5 replacing Flash...
  115. giving developers a choice!
  116. ...should I use HTML5 today?
  117. “The future is already here – it's just not very evenly distributed” William Gibson
  118. www.opera.com/developer patrick.lauke@opera.com
  1. Brave new world of HTML5 NEW SEMANTICS, MULTIMEDIA AND MORE Patrick H. Lauke / Interlink Conference / Vancouver / 4 June 2011
  2. Web Evangelist at Opera
  3. ...should I use HTML5 today?
  4. www.textfiles.com/underconstruction
  5. "there is already a lot of excitement for HTML5, but it’s a little too early to deploy it because we’re running into interoperability issues." Philippe Le Hegaret, W3C interaction domain leader blogs.techrepublic.com.com/hiner/?p=6369
  6. http://www.flickr.com/photos/24374884@N08/4603715307/
  7. NATIVE HTML5
  8. HTML5…without the hype?
  9. A brief history of HTML5 1999 HTML 4.01 2000 XHTML 1.0
  10. 2004 W3C focus on XHTML 2.0 …the future is XML-based! http://www.flickr.com/photos/craiga/17071467/
  11. WHATWG Web Hypertext Application Technology Working Group
  12. 2007 W3C HTML5 WG
  13. HTML5 does not replace HTML 4.01 / XHTML 1.0
  14. HTML5 has more bling!
  15. “...extending the language to better support Web applications [...] This puts HTML in direct competition with other technologies[...] , in particular Flash and Silverlight.” Ian Hickson, Editor of HTML5 http://lists.w3.org/Archives/Public/public-html/2009Jan/0215.html
  16. HTML4.01 primarily defined markup elements
  17. HTML5 supercedes HTML 4.01, XHTML 1.0 and DOM Level 2 HTML
  18. HTML5 adds/redefines markup elements
  19. HTML5 aimed at browser devs detailed algorithms for processing/error correction
  20. <b><i>Yo!</b></i>
  21. software.hixie.ch/utilities/js/live-dom-viewer/
  22. 1. syntax/semantics 2. forms 3. multimedia
  23. 1. syntax/semantics 2. forms 3. multimedia
  24. the dirty secret of the doctype
  25. HTML5 <!DOCTYPE html>
  26. <meta charset=”utf-8” /> <meta charset=utf-8> <MeTa CHarSet=utf-8>
  27. <style type=”text/css”> </style> <script type=”text/javascript”> </script>
  28. <style type=”text/css”> </style> <script type=”text/javascript”> </script>
  29. <!doctype html> <title>Minimal HTML5</title>
  30. new elements for more accurate semantics
  31. Top 20 class names 1. footer 11. button 2. menu 12. main 3. style1 13. style3 4. msonormal 14. small 5. text 15. nav 6. content 16. clear 7. title 17. search 8. style2 18. style4 9. header 19. logo 10. copyright 20. body http://devfiles.myopera.com/articles/572/classlist-url.htm
  32. Top 20 id names 1. footer 11. search 2. content 12. nav 3. header 13. wrapper 4. logo 14. top 5. container 15. table2 6. main 16. layer2 7. table1 17. sidebar 8. menu 18. image1 9. layer1 19. banner 10. autonumber1 20. navigation http://devfiles.myopera.com/articles/572/idlist-url.htm
  33. html5doctor.com
  34. unambiguous and machine readable
  35. current and old browsers “support” these (although some need a little extra help) header, footer, … { display: block; }
  36. Internet Explorer < 9 needs extra training wheels document.createElement('header'); document.createElement('footer'); … http://html5doctor.com/how-to-get-html5-working-in-ie-and-firefox-2
  37. 1. syntax/semantics 2. forms 3. multimedia
  38. improved form elements because the web is more interactive
  39. jqueryui.com
  40. rich form elements without JavaScript <input type="date"> <input type="time"> <input type="month"> <input type="week"> <input type="datetime" … > <input type="range"> <input type="number"> <input type="color"> <input type="file" multiple> <input … placeholder="…"> <input … autofocus> <input … autocomplete>
  41. built-in validation without JavaScript <input … required> <input type="tel"> <input type="email"> <input type="url"> <input … pattern="[a-z]{3}[0-9]{3}"> <input type="number" min="1" max="10" step="2"> …
  42. people.opera.com/patrickl/experiments/forms/newtypes.html
  43. people.opera.com/patrickl/experiments/forms/validation.html
  44. validity checking with JavaScript form.checkValidity() formelement.checkValidity() formelement.setCustomValidity() formelement.validity interface ValidityState { readonly attribute boolean valueMissing; readonly attribute boolean typeMismatch; readonly attribute boolean patternMismatch; readonly attribute boolean tooLong; readonly attribute boolean rangeUnderflow; readonly attribute boolean rangeOverflow; readonly attribute boolean stepMismatch; readonly attribute boolean customError; readonly attribute boolean valid; };
  45. 1. syntax/semantics 2. forms 3. multimedia
  46. making your site Fonzie compliant...
  47. <video>
  48. Adobe Flash currently most common video delivery mechanism
  49. <object width="425" height="344"> <param name="movie" value="http://www.youtube.com/v/9sEI1AUFJKw&hl=en &fs=1&"></param> <param name="allowFullScreen" value="true"></param> <param name="allowscriptaccess" value="always"></param> <embed src="http://www.youtube.com/v/9sEI1AUFJKw&hl=en&f s=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed> </object>
  50. <video src="video.webm"></video>
  51. <video src="video.webm" controls autoplay loop preload="none" poster="poster.jpg" width="320" height="240"> <a href="video.webm">Download movie</a> </video>
  52. video as native object ● behaves like any other HTML element ● keyboard accessibility out-of-the-box
  53. people.opera.com/patrickl/experiments/video/hover+transition
  54. powerful (simple) API
  55. icant.co.uk/easy-youtube
  56. controlling <video> with JavaScript var v = document.getElementById('player'); v.play(); v.pause(); v.volume = … ; v.currentTime = … ; …
  57. events fired by <video> var v = document.getElementById('player'); v.addEventListener('loadeddata', function() { … }, true) v.addEventListener('play', function() { … }, true) v.addEventListener('pause', function() { … }, true) v.addEventListener('timeupdate', function() { … }, true) v.addEventListener('ended', function() { … }, true) …
  58. people.opera.com/patrickl/experiments/webm/basic-controls
  59. people.opera.com/patrickl/experiments/webm/fancy-controls
  60. people.opera.com/patrickl/experiments/webm/fancy-swap
  61. HTML5 means all your old dHTML is cool again!
  62. video formats the big debate?
  63. HTML5 does not specify video container/codec (same as with images in HTML 4.01)
  64. MP4/H.264 or Ogg Theora or WebM/VP8
  65. MP4 / H.264 ubiquitous, patent encumbered, licensing/royalties
  66. Ogg Theora free and open, no licensing fees not many tools for it, not web optimised
  67. WebM / VP8 open and royalty-free, web-optimised support by hardware and software vendors
  68. providing multiple sources <video controls autoplay poster="…" width="…" height="…"> <source src="movie.mp4" type="video/mp4" /> <source src="movie.webm" type="video/webm" /> <source src="movie.ogv" type="video/ogg" /> <!-- fallback content --> </video>
  69. www.ffmpeg.org
  70. www.mirovideoconverter.com
  71. flash fallback for older browsers http://camendesign.com/code/video_for_everybody
  72. <video controls autoplay poster="…" width="…" height="…"> <source src="movie.mp4" type="video/mp4" /> <source src="movie.webm" type="video/webm" /> <source src="movie.ogv" type="video/ogg" /> <object width="…" height="…" type="application/x- shockwave-flash" data="player.swf"> <param name="movie" value="player.swf" /> <param name="flashvars" value=" … file=movie.mp4" /> <!-- fallback content --> </object> </video>
  73. <audio>
  74. audio...exactly the same as video <audio src=”music.mp3” controls autoplay … ></audio> <audio controls autoplay> <source src="music.mp3" type="audio/mpeg" /> <source src="music.oga" type="audio/ogg" /> <!-- fallback content --> </audio> formats: MP3 vs Ogg Vorbis (vs WAV)
  75. people.opera.com/patrickl/experiments/audio/wilhelm
  76. people.opera.com/patrickl/experiments/audio/windchime
  77. <canvas>
  78. canvas = “scriptable images” <canvas width="…" height="…"></canvas>
  79. canvas has standard API methods for drawing ctx = canvas.getContext("2d"); ctx.fillRect(x, y, width, height); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x, y); ctx.bezierCurveTo(x1, y1, x2, y2, c1, c2); www.w3.org/TR/2dcontext
  80. people.opera.com/patrickl/experiments/canvas/particle/3
  81. mariuswatz.com/works/abstract01js
  82. canvas drawing ready-made images ctx = canvas.getContext("2d"); var logo = new Image(); logo.src = 'logo.png'; ctx.drawImage(logo,x1,y1,w1,h1,x2,y2,w2,h2); or call in an existing image already on the page
  83. www.splintered.co.uk/experiments/archives/paranoid_0.3
  84. canvas access to image data array ctx = canvas.getContext("2d"); canvasData = ctx.getImageData(x,y,w,h); [R,G,B,A,R,G,B,A,R,G,B,A,R,G,B,A, … ]
  85. www.splintered.co.uk/experiments/archives/canvas-ambilight
  86. github.com/mezzoblue/PaintbrushJS
  87. canvas also works with video ctx = canvas.getContext("2d"); v = document.getElementById('player'); ctx.drawImage(v,x1,y1,w1,h2,x2,y2,w2,h2); grab currently displayed frame (update as appropriate)
  88. html5doctor.com/video-canvas-magic
  89. media.chikuyonok.ru/ambilight
  90. canvas accessibility?
  91. video, audio and canvas on any device without plugins (Java / Flash / Silverlight not ubiquitous)
  92. 1. syntax/semantics 2. forms 3. multimedia 4. … and more
  93. HTML5 (and friends) has lots more APIs for developers (for powerful client-side apps)
  94. geolocation navigator.geolocation.getCurrentPosition(success, error); navigator.geolocation.watchCurrentPosition(success, error); function success(position) { /* where's Wally? */ var lat = position.coords.latitude; var long = position.coords.longitude; ... } www.w3.org/TR/geolocation-API
  95. offline detection window.addEventListener('online', function(){ … }, true); window.addEventListener('offline', function(){ … }, true); …however, currently unreliable!
  96. application cache <html manifest=”blah.manifest”> CACHE MANIFEST # send this with correct text/cache-manifest MIME images/sprites.png scripts/common.js scripts/jquery.js styles/global.css NETWORK: # never cached (apart from normal caching mechanism) onlineonly.css FALLBACK: # pattern matching. fallback file will also be cached images/ images/not-offline.png
  97. data storage cookies and their limitations... document.cookie = 'key=value; expires=Thu, 15 Feb 2010 23:59:59 UTC; path=/' … /* convoluted string operations go here … */
  98. localStorage/sessionStorage localStorage.setItem(key, value); localStorage.getItem(key); localStorage.clear(); localStorage.key = value; if (localStorage.key == '…') { … } … localStorage – persistent per domain sessionStorage – current URL and window in session only string data – store serialised objects
  99. WebSQL relational DB / SQL in browser var db = openDatabase(dbName, version, displayName, expectedSize); db.transaction(function(tx) { tx.executeSql(sqlStatement, [], function (tx, result) { /* do something with the results */ }); }); not being developed further (IE/Mozilla prefer IndexedDB) – nonetheless available right now in Opera+WebKit!
  100. etc File API, Web Workers, History API, Web Messaging, Drag and Drop, Server-Sent Events…
  101. is it all safe to use, right now?
  102. www.youtube.com/html5
  103. caniuse.com
  104. don't do browser sniffing http://www.flickr.com/photos/timdorr/2096272747/
  105. feature-detection progressive enhancement, graceful degradation http://diveintohtml5.org/everything.html
  106. feature-detection for audio/video if (!!document.createElement('video').canPlayType;) { … } if (!!document.createElement('audio').canPlayType;) { … }
  107. feature-detection for audio/video codecs var v = document.createElement('video'); if (!!(v.canPlayType)&& ((v.canPlayType('video/webm;codecs="vp8,vorbis"') == 'probably') || (v.canPlayType('video/webm;codecs="vp8, vorbis"') == 'maybe'))) { … }
  108. modernizr.com
  109. patching older browsers github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
  110. yepnopejs.com
  111. sublimevideo.net
  112. www.happyworm.com/jquery/jplayer
  113. HTML5 as Flashkiller?
  114. not a question of HTML5 replacing Flash...
  115. giving developers a choice!
  116. ...should I use HTML5 today?
  117. “The future is already here – it's just not very evenly distributed” William Gibson
  118. www.opera.com/developer patrick.lauke@opera.com

More Related Content

More from Patrick Lauke

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

×