SlideShare a Scribd company logo
WHAT’S NEW IN
      HTML5, CSS3 & JAVASCRIPT?
                           James Pearce
                           @jamespearce



Thursday, November 3, 11
2011 HAS BEEN AN
                   EXCITING YEAR FOR
                         HTML5



Thursday, November 3, 11
EVERYTHING
                           EXCITING IN 2011
                           HAS BEEN CALLED
                                HTML5



Thursday, November 3, 11
Thursday, November 3, 11
CSS   JS




Thursday, November 3, 11
Where is all this good
                        stuff coming from?




Thursday, November 3, 11
WHATWG




Thursday, November 3, 11
Thursday, November 3, 11
Thursday, November 3, 11
Thursday, November 3, 11
font-face
                           accelerometer
                                                       @page
       localStorage
                                                             CSS Text
         @media
                                                               manifest
 transform
                                                             <video>
         WebSQL
                                                           GeoLocation

          type=camera                                     canvas

                                    keyframe   gradient

Thursday, November 3, 11
Thursday, November 3, 11
Thursday, November 3, 11
Thursday, November 3, 11
Thursday, November 3, 11
WebFont        Video     Audio    Graphics
        Device Access

              Camera                 CSS Styling & Layout               Network

             Location                                                    HTTP
                                             JavaScript
             Contacts                                                    AJAX

                 SMS                      Semantic HTML                 Events

           Orientation                                                  Sockets
                           File Systems      Workers &
                                                            Cross-App
                 Gyro       Databases          Parallel                  SSL
                                                            Messaging
                           App Caches        Processing




Thursday, November 3, 11
State of
                           the Art




Thursday, November 3, 11
Thursday, November 3, 11
HTML5 Semantics
Thursday, November 3, 11
Document Structure

      <!DOCTYPE html>
      <html>

         <head>

             <script src="app.js"></script>

             <link rel="stylesheet" href="theme.css">




Thursday, November 3, 11
Document Structure


                                 <header>

                                <section>
                                <article>
                   <nav>                    <aside>
                                <article>

                                 <footer>



Thursday, November 3, 11
Thursday, November 3, 11
Input Types

                           <form>
                             <input type='date' />
                             <input type='time' />
                             <input type='datetime' />
                           </form>




Thursday, November 3, 11
Opera...

                           <input type='datetime' />




Thursday, November 3, 11
Input Types

                           datetime         number
                           date             range
                           time             color
                           month            search
                           week             tel
                           datetime-local   url
                                            email




Thursday, November 3, 11
iOS5 Support




Thursday, November 3, 11
Progress and meters

           <progress max="10"></progress>

           <progress max="10" value="6"></progress>




Thursday, November 3, 11
Progress and meters

       <meter max="10" value="7"></meter>

       <meter min="5" max="10" value="7"></meter>




Thursday, November 3, 11
Progress and meters

    <meter max="10" high="8" value="1"></meter>

    <meter max="10" high="8" value="9"></meter>




Thursday, November 3, 11
Data Attributes

      <div id='el' data-smell='fish'></div>
      <script>
        var el = document.getElementById('el');
        console.log(el.dataset);
      </script>




Thursday, November 3, 11
Data Attributes

      <script>
        el.dataset.generalAppearance = 'slimy';
        console.log(el.outerHTML);
      </script>




Thursday, November 3, 11
Contenteditable

                           <div contenteditable=""></div>




Thursday, November 3, 11
Contenteditable

                           <!doctype html>
                           <html>
                             <head>
                               <style contenteditable="">
                                  html {}
                                  head, style {
                                    display:block;
                                    font-size:2em;
                                  }
                               </style>
                             </head>
                           </html>                          Demo
Thursday, November 3, 11
Multimedia
Thursday, November 3, 11
Video

             <video width="320" height="240" controls="">
               <source src="movie.mp4" type="video/mp4" />
               <source src="movie.ogg" type="video/ogg" />
               Your browser does not support the video tag.
             </video>




Thursday, November 3, 11
Audio

             <audio autoplay="" controls="">
               <source src="horse.ogg" type="audio/ogg" />
               <source src="horse.mp3" type="audio/mp3" />
               Your browser does not support the audio element.
             </audio>




Thursday, November 3, 11
Connectivity
Thursday, November 3, 11
Web Sockets

                           var socket = new WebSocket(
                              'ws://echo.websocket.org'
                           );

                           socket.onopen = function(e) {
                              socket.send('Echo... echo...');
                           };

                           socket.onmessage = function(e) {
                              console.log(e.data);
                           };




Thursday, November 3, 11
Server-sent Events

                var source = new EventSource('/status.php');

                source.onmessage = function (e) {
                   console.log(e.data);
                };




                              data: My messagenn

                              data: Line 1n
                              data: Line 2nn


Thursday, November 3, 11
Performance &
                            Integration
Thursday, November 3, 11
Web Workers

                var worker = new Worker('task.js');
                worker.onmessage = function(e) {
                   alert('Worker says ' + e.data);
                };
                worker.postMessage();



                // task.js:
                self.onmessage = function(e) {
                   // calculate Fibonacci series or something
                  self.postMessage("Answer is...");
                };


Thursday, November 3, 11
Navigation Timing

                <script>
                  function onLoad() {
                    console.log(
                       new Date().getTime() -
                      performance.timing.navigationStart
                    );
                  }
                </script>

                <body onload="onLoad()">
                  ...




Thursday, November 3, 11
Thursday, November 3, 11
History API

                           window.history.pushState(
                              {key:"value"},
                              "Title",
                              "/newpage.html"
                           );


                           window.onpopstate = function(e) {  
                             console.log(e.state);
                           };


                                                         Demo

Thursday, November 3, 11
Drag and Drop

                    <div draggable="true">Apple</div>
                    <div draggable="true">Orange</div>
                    <div draggable="true">Pear</div>

                    <div id='basket'>Basket: </div>




Thursday, November 3, 11
Drag and Drop
           window.ondragstart = function (e) {
              e.dataTransfer.setData(
                 'text/plain', e.target.innerHTML
              );
           };

           var basket = document.getElementById('basket');
           basket.ondragover = function (e) {
              e.preventDefault();
           };
           basket.ondrop = function (e) {
              e.target.innerHTML +=
                e.dataTransfer.getData('text/plain') + ' ';
           };
                                                         Demo
Thursday, November 3, 11
Offline & Storage
Thursday, November 3, 11
Web Storage

           sessionStorage.setItem("user", "John");
           console.log(sessionStorage.getItem("user"));


           localStorage.setItem("prefs", {a:'b'});
           console.log(localStorage.getItem("prefs"));


           localStorage.removeItem("prefs");
           localStorage.clear();




Thursday, November 3, 11
Web SQL




Thursday, November 3, 11
Indexed DB

                           indexedDB.open('my_database')

                           db.createObjectStore('my_store', {
                             keyPath: 'record_id'
                           });

                           store.put({
                             record_id: 123,
                             name: 'My record'
                           });
                           store.get(123);




Thursday, November 3, 11
Indexed DB

                store.openCursor().onsuccess = function(e) {  

                  var cursor = e.target.result;

                  if (cursor) {  
                    console.log(cursor.value);  
                    cursor.continue();  
                  } else {
                    console.log('Got them all');  
                  }  

                };



Thursday, November 3, 11
File API

         <input type="file" id="picker">

         <script>
           var picker = document.getElementById('picker');
           picker.onchange = function (e) {
              console.log(picker.files[0]);
           };
         </script>




Thursday, November 3, 11
App cache

                           CACHE MANIFEST
                           # v556

                           CACHE:
                           theme.css
                           app/app.js

                           NETWORK:
                           login.php
                           http://api.twitter.com

                           FALLBACK:
                           /login.php /static.html


Thursday, November 3, 11
3D, Graphics, Effects
Thursday, November 3, 11
Web GL



                                    Demo

Thursday, November 3, 11
CSS3 Styling
Thursday, November 3, 11
The clichés

                              border-radius: 5px 10px;




                              text-shadow: -1px -1px #fff,
                                            1px 1px #333;



                              box-shadow: 0 0 5px 5px #888;


                                                         Demo
Thursday, November 3, 11
Element.classList

            <div id='el' class='extjs'></div>

            var el = document.getElementById('el');
            el.classList.remove('extjs');  
            el.classList.add('sencha');  
              
            el.classList.toggle('rocks');
            el.classList.contains('rockstars');

            console.log(el.classList);




Thursday, November 3, 11
Element.matchesSelector

            <div id='el' class='sencha'></div>

            <script>
              var el = document.getElementById('el');
              console.log(el.matchesSelector('.sencha'));
              console.log(el.matchesSelector('#extjs'));
            </script>




Thursday, November 3, 11
window.matchMedia

                           @media screen and (min-width: 400px) {
                             * { font-family: sans-serif }
                           }

                           window.matchMedia(
                             "screen and (min-width: 400px)"
                           )




Thursday, November 3, 11
Transformations
                            & Translations




                                             Demo

Thursday, November 3, 11
CSS Shaders

                           div.waving {
                               filter: custom(url('wave.vs'),
                                   20 20, phase 0, amplitude 50
                               );
                           }




Thursday, November 3, 11
CSS Shaders

                           div.waving {
                               filter: grayscale(1.0)
                                        custom(
                                            url('book.vs')
                                            url('page.fs')
                                        );
                           }




                                                             Demo


Thursday, November 3, 11
Device Access
Thursday, November 3, 11
Geolocation
                                 &
                           Accelerometer




Thursday, November 3, 11
Compass

                window.ondeviceorientation = function(e) {
                   console.log(e.webkitCompassHeading);
                }




Thursday, November 3, 11
Media Capture

                           <input type="file" id="picker"
                               accept="image/*"
                               capture='camera'
                           >

                           // camcorder
                           // microphone
                           // filesystem




Thursday, November 3, 11
Media Capture

         <input type="file" id="picker" accept="image/*" />

         <script>
           var picker = document.getElementById('picker');
           picker.onchange = function (e) {
              var image = picker.files[0];
              image.getFormatData(
                 function (data) {
                   console.write(data);
                 }
              );
           };
         </script>


Thursday, November 3, 11
Everything Else
                                 :-(



Thursday, November 3, 11
ES 5




Thursday, November 3, 11
Object

                           Object.create
                           Object.defineProperty
                           Object.defineProperties
                           Object.getPrototypeOf
                           Object.keys

                           Object.seal
                           Object.freeze
                           Object.preventExtensions
                           Object.isSealed
                           Object.isFrozen
                           Object.isExtensible
Thursday, November 3, 11
Array.prototype

                             arr.indexOf
                             arr.lastIndexOf
                             arr.every
                             arr.some
                             arr.forEach
                             arr.map
                             arr.filter
                             arr.reduce




Thursday, November 3, 11
What’s coming down
                               the track?




Thursday, November 3, 11
ES.6
                             ‘.next’
                           ‘Harmony’



Thursday, November 3, 11
Block Scope

                           for (...) {
                             let myvar='scoped';
                             const myconst=42;
                             function myfunc() {
                               //...
                             }
                           }

                           console.log(myvar); //RefError




Thursday, November 3, 11
Destructuring

                    var [x, y] = [1, 2];

                    var {a:x, b:y} = {a:1, b:2};

                    function myfunc( {a:x, b:y} ) {...}
                    myfunc({a:1, a:2});




Thursday, November 3, 11
Default Arguments

                           function myfunc(a=1, b=2) {
                             console.log(a);
                             console.log(b);
                           }

                           myfunc();




Thursday, November 3, 11
Rest

                           function myfunc(a, ...b) {
                             console.log(a);

                               b.forEach(function (i) {
                                 console.log(b);
                               });

                           }

                           myfunc(1, 2, 3, 4);



Thursday, November 3, 11
Spread

                           function myfunc(a, b, c, d) {
                             console.log(a);
                             //...
                           }

                           var args = [2, 3, 4];

                           myfunc(1, ...args);




Thursday, November 3, 11
Modules

          module MyModule {
            export function a() {};
            export function b() {};
          }

          import MyModule.*;

          module Ext = require('http://../ext.js');




Thursday, November 3, 11
Classes

                           class MyClass {
                             constructor(a, b) {
                               private a = a;
                               //...
                             }
                             myMethod() {
                               //...
                             }
                           }




Thursday, November 3, 11
Iterators
                             Generators
                           Comprehensions



Thursday, November 3, 11
Device Access




Thursday, November 3, 11
Camera
                           Microphone
                            Contacts
                            Calendar
                           Messaging
                           Telephony
                             NFC...

Thursday, November 3, 11
Funky Stuff




Thursday, November 3, 11
Web Components
                             Shadow DOM
                           Model Driven Views




Thursday, November 3, 11
What does this
                           mean for you?




Thursday, November 3, 11
Stay on top of change

                              http://blogs.msdn.com/b/ie/
                              https://developer.mozilla.org
                                http://chromestatus.com




Thursday, November 3, 11
Stay on top of diversity

                              CanIUse
                           BrowserScope
                             Modernizr
                            DeviceAtlas
                           HTML5 Rocks




Thursday, November 3, 11
Stay on top of change
                                                  100%
              Support




                                Browsers




                                           Capabilities & specifications

Thursday, November 3, 11
Stay on top of change
                                                  100%
              Support




                                Browsers         Polyfills Frameworks




                                           Capabilities & specifications

Thursday, November 3, 11
Relish the opportunity...

                           ...to do amazing things!




Thursday, November 3, 11
THANKS
                             James Pearce
                             @jamespearce



Thursday, November 3, 11

More Related Content

Similar to What's new in HTML5, CSS3 and JavaScript, James Pearce

Introducing Ext GWT 3.0
Introducing Ext GWT 3.0Introducing Ext GWT 3.0
Introducing Ext GWT 3.0
Sencha
 
Mike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to youMike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to youStarTech Conference
 
How diazo works
How diazo worksHow diazo works
How diazo works
Steve McMahon
 
Not Only Drupal
Not Only DrupalNot Only Drupal
Not Only Drupal
mcantelon
 
HTML5 - Yeah!
HTML5 - Yeah!HTML5 - Yeah!
HTML5 - Yeah!
J Cornelius
 
Active Record Introduction - 3
Active Record Introduction - 3Active Record Introduction - 3
Active Record Introduction - 3
Blazing Cloud
 
Pocket Knife JS
Pocket Knife JSPocket Knife JS
Pocket Knife JS
Diogo Antunes
 
Web Scraping using Diazo!
Web Scraping using Diazo!Web Scraping using Diazo!
Web Scraping using Diazo!
pythonchile
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSCaridy Patino
 
Html5 Audio & video
Html5 Audio & videoHtml5 Audio & video
Html5 Audio & videoCarlos Solis
 
Elasticsearch – mye mer enn søk! [JavaZone 2013]
Elasticsearch – mye mer enn søk! [JavaZone 2013]Elasticsearch – mye mer enn søk! [JavaZone 2013]
Elasticsearch – mye mer enn søk! [JavaZone 2013]
foundsearch
 
Mapnik2 Performance, September 2011
Mapnik2 Performance, September 2011Mapnik2 Performance, September 2011
Mapnik2 Performance, September 2011
Development Seed
 
Hacking Webkit & Its JavaScript Engines
Hacking Webkit & Its JavaScript EnginesHacking Webkit & Its JavaScript Engines
Hacking Webkit & Its JavaScript Engines
Sencha
 
Big Data & Cloud | Cloud Storage Simplified | Adrian Cole
Big Data & Cloud | Cloud Storage Simplified | Adrian ColeBig Data & Cloud | Cloud Storage Simplified | Adrian Cole
Big Data & Cloud | Cloud Storage Simplified | Adrian Cole
JAX London
 
Building Sencha Themes
Building Sencha ThemesBuilding Sencha Themes
Building Sencha Themes
Sencha
 
A PHP Christmas Miracle - 3 Frameworks, 1 app
A PHP Christmas Miracle - 3 Frameworks, 1 appA PHP Christmas Miracle - 3 Frameworks, 1 app
A PHP Christmas Miracle - 3 Frameworks, 1 app
Ryan Weaver
 
[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web Design[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web DesignChristopher Schmitt
 
WebGL Fundamentals
WebGL FundamentalsWebGL Fundamentals
WebGL Fundamentals
Sencha
 
Ext GWT 3.0 Advanced Templates
Ext GWT 3.0 Advanced TemplatesExt GWT 3.0 Advanced Templates
Ext GWT 3.0 Advanced TemplatesSencha
 

Similar to What's new in HTML5, CSS3 and JavaScript, James Pearce (20)

Introducing Ext GWT 3.0
Introducing Ext GWT 3.0Introducing Ext GWT 3.0
Introducing Ext GWT 3.0
 
Mike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to youMike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to you
 
How diazo works
How diazo worksHow diazo works
How diazo works
 
Not Only Drupal
Not Only DrupalNot Only Drupal
Not Only Drupal
 
HTML5 - Yeah!
HTML5 - Yeah!HTML5 - Yeah!
HTML5 - Yeah!
 
Active Record Introduction - 3
Active Record Introduction - 3Active Record Introduction - 3
Active Record Introduction - 3
 
Pocket Knife JS
Pocket Knife JSPocket Knife JS
Pocket Knife JS
 
Web Scraping using Diazo!
Web Scraping using Diazo!Web Scraping using Diazo!
Web Scraping using Diazo!
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
 
Html5 Audio & video
Html5 Audio & videoHtml5 Audio & video
Html5 Audio & video
 
Elasticsearch – mye mer enn søk! [JavaZone 2013]
Elasticsearch – mye mer enn søk! [JavaZone 2013]Elasticsearch – mye mer enn søk! [JavaZone 2013]
Elasticsearch – mye mer enn søk! [JavaZone 2013]
 
Mapnik2 Performance, September 2011
Mapnik2 Performance, September 2011Mapnik2 Performance, September 2011
Mapnik2 Performance, September 2011
 
Hacking Webkit & Its JavaScript Engines
Hacking Webkit & Its JavaScript EnginesHacking Webkit & Its JavaScript Engines
Hacking Webkit & Its JavaScript Engines
 
Big Data & Cloud | Cloud Storage Simplified | Adrian Cole
Big Data & Cloud | Cloud Storage Simplified | Adrian ColeBig Data & Cloud | Cloud Storage Simplified | Adrian Cole
Big Data & Cloud | Cloud Storage Simplified | Adrian Cole
 
Building Sencha Themes
Building Sencha ThemesBuilding Sencha Themes
Building Sencha Themes
 
A PHP Christmas Miracle - 3 Frameworks, 1 app
A PHP Christmas Miracle - 3 Frameworks, 1 appA PHP Christmas Miracle - 3 Frameworks, 1 app
A PHP Christmas Miracle - 3 Frameworks, 1 app
 
[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web Design[jqconatx] Adaptive Images for Responsive Web Design
[jqconatx] Adaptive Images for Responsive Web Design
 
WebGL Fundamentals
WebGL FundamentalsWebGL Fundamentals
WebGL Fundamentals
 
Ext GWT 3.0 Advanced Templates
Ext GWT 3.0 Advanced TemplatesExt GWT 3.0 Advanced Templates
Ext GWT 3.0 Advanced Templates
 

More from Sencha

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web Components
Sencha
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 Highlights
Sencha
 
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha Test
Sencha
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha
 
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Sencha
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research Report
Sencha
 
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsIntroducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
Sencha
 
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
Sencha
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
Sencha
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
Sencha
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
Sencha
 
Ext JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsExt JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell Simeons
Sencha
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
Sencha
 

More from Sencha (20)

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web Components
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 Highlights
 
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha Test
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
 
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop First
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research Report
 
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsIntroducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
 
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
 
Ext JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsExt JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell Simeons
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
 

Recently uploaded

When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 

Recently uploaded (20)

When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 

What's new in HTML5, CSS3 and JavaScript, James Pearce

  • 1. WHAT’S NEW IN HTML5, CSS3 & JAVASCRIPT? James Pearce @jamespearce Thursday, November 3, 11
  • 2. 2011 HAS BEEN AN EXCITING YEAR FOR HTML5 Thursday, November 3, 11
  • 3. EVERYTHING EXCITING IN 2011 HAS BEEN CALLED HTML5 Thursday, November 3, 11
  • 5. CSS JS Thursday, November 3, 11
  • 6. Where is all this good stuff coming from? Thursday, November 3, 11
  • 11. font-face accelerometer @page localStorage CSS Text @media manifest transform <video> WebSQL GeoLocation type=camera canvas keyframe gradient Thursday, November 3, 11
  • 16. WebFont Video Audio Graphics Device Access Camera CSS Styling & Layout Network Location HTTP JavaScript Contacts AJAX SMS Semantic HTML Events Orientation Sockets File Systems Workers & Cross-App Gyro Databases Parallel SSL Messaging App Caches Processing Thursday, November 3, 11
  • 17. State of the Art Thursday, November 3, 11
  • 20. Document Structure <!DOCTYPE html> <html> <head> <script src="app.js"></script> <link rel="stylesheet" href="theme.css"> Thursday, November 3, 11
  • 21. Document Structure <header> <section> <article> <nav> <aside> <article> <footer> Thursday, November 3, 11
  • 23. Input Types <form> <input type='date' /> <input type='time' /> <input type='datetime' /> </form> Thursday, November 3, 11
  • 24. Opera... <input type='datetime' /> Thursday, November 3, 11
  • 25. Input Types datetime number date range time color month search week tel datetime-local url email Thursday, November 3, 11
  • 27. Progress and meters <progress max="10"></progress> <progress max="10" value="6"></progress> Thursday, November 3, 11
  • 28. Progress and meters <meter max="10" value="7"></meter> <meter min="5" max="10" value="7"></meter> Thursday, November 3, 11
  • 29. Progress and meters <meter max="10" high="8" value="1"></meter> <meter max="10" high="8" value="9"></meter> Thursday, November 3, 11
  • 30. Data Attributes <div id='el' data-smell='fish'></div> <script> var el = document.getElementById('el'); console.log(el.dataset); </script> Thursday, November 3, 11
  • 31. Data Attributes <script> el.dataset.generalAppearance = 'slimy'; console.log(el.outerHTML); </script> Thursday, November 3, 11
  • 32. Contenteditable <div contenteditable=""></div> Thursday, November 3, 11
  • 33. Contenteditable <!doctype html> <html> <head> <style contenteditable=""> html {} head, style { display:block; font-size:2em; } </style> </head> </html> Demo Thursday, November 3, 11
  • 35. Video <video width="320" height="240" controls=""> <source src="movie.mp4" type="video/mp4" /> <source src="movie.ogg" type="video/ogg" /> Your browser does not support the video tag. </video> Thursday, November 3, 11
  • 36. Audio <audio autoplay="" controls=""> <source src="horse.ogg" type="audio/ogg" /> <source src="horse.mp3" type="audio/mp3" /> Your browser does not support the audio element. </audio> Thursday, November 3, 11
  • 38. Web Sockets var socket = new WebSocket( 'ws://echo.websocket.org' ); socket.onopen = function(e) { socket.send('Echo... echo...'); }; socket.onmessage = function(e) { console.log(e.data); }; Thursday, November 3, 11
  • 39. Server-sent Events var source = new EventSource('/status.php'); source.onmessage = function (e) { console.log(e.data); }; data: My messagenn data: Line 1n data: Line 2nn Thursday, November 3, 11
  • 40. Performance & Integration Thursday, November 3, 11
  • 41. Web Workers var worker = new Worker('task.js'); worker.onmessage = function(e) { alert('Worker says ' + e.data); }; worker.postMessage(); // task.js: self.onmessage = function(e) { // calculate Fibonacci series or something   self.postMessage("Answer is..."); }; Thursday, November 3, 11
  • 42. Navigation Timing <script> function onLoad() { console.log( new Date().getTime() - performance.timing.navigationStart ); } </script> <body onload="onLoad()"> ... Thursday, November 3, 11
  • 44. History API window.history.pushState( {key:"value"}, "Title", "/newpage.html" ); window.onpopstate = function(e) {     console.log(e.state); }; Demo Thursday, November 3, 11
  • 45. Drag and Drop <div draggable="true">Apple</div> <div draggable="true">Orange</div> <div draggable="true">Pear</div> <div id='basket'>Basket: </div> Thursday, November 3, 11
  • 46. Drag and Drop window.ondragstart = function (e) { e.dataTransfer.setData( 'text/plain', e.target.innerHTML ); }; var basket = document.getElementById('basket'); basket.ondragover = function (e) { e.preventDefault(); }; basket.ondrop = function (e) { e.target.innerHTML += e.dataTransfer.getData('text/plain') + ' '; }; Demo Thursday, November 3, 11
  • 47. Offline & Storage Thursday, November 3, 11
  • 48. Web Storage sessionStorage.setItem("user", "John"); console.log(sessionStorage.getItem("user")); localStorage.setItem("prefs", {a:'b'}); console.log(localStorage.getItem("prefs")); localStorage.removeItem("prefs"); localStorage.clear(); Thursday, November 3, 11
  • 50. Indexed DB indexedDB.open('my_database') db.createObjectStore('my_store', { keyPath: 'record_id' }); store.put({ record_id: 123, name: 'My record' }); store.get(123); Thursday, November 3, 11
  • 51. Indexed DB store.openCursor().onsuccess = function(e) {     var cursor = e.target.result;   if (cursor) {       console.log(cursor.value);       cursor.continue();     } else {     console.log('Got them all');     }   }; Thursday, November 3, 11
  • 52. File API <input type="file" id="picker"> <script> var picker = document.getElementById('picker'); picker.onchange = function (e) { console.log(picker.files[0]); }; </script> Thursday, November 3, 11
  • 53. App cache CACHE MANIFEST # v556 CACHE: theme.css app/app.js NETWORK: login.php http://api.twitter.com FALLBACK: /login.php /static.html Thursday, November 3, 11
  • 55. Web GL Demo Thursday, November 3, 11
  • 57. The clichés border-radius: 5px 10px; text-shadow: -1px -1px #fff, 1px 1px #333; box-shadow: 0 0 5px 5px #888; Demo Thursday, November 3, 11
  • 58. Element.classList <div id='el' class='extjs'></div> var el = document.getElementById('el'); el.classList.remove('extjs');   el.classList.add('sencha');      el.classList.toggle('rocks'); el.classList.contains('rockstars'); console.log(el.classList); Thursday, November 3, 11
  • 59. Element.matchesSelector <div id='el' class='sencha'></div> <script> var el = document.getElementById('el'); console.log(el.matchesSelector('.sencha')); console.log(el.matchesSelector('#extjs')); </script> Thursday, November 3, 11
  • 60. window.matchMedia @media screen and (min-width: 400px) { * { font-family: sans-serif } } window.matchMedia( "screen and (min-width: 400px)" ) Thursday, November 3, 11
  • 61. Transformations & Translations Demo Thursday, November 3, 11
  • 62. CSS Shaders div.waving { filter: custom(url('wave.vs'), 20 20, phase 0, amplitude 50 ); } Thursday, November 3, 11
  • 63. CSS Shaders div.waving { filter: grayscale(1.0) custom( url('book.vs') url('page.fs') ); } Demo Thursday, November 3, 11
  • 65. Geolocation & Accelerometer Thursday, November 3, 11
  • 66. Compass window.ondeviceorientation = function(e) { console.log(e.webkitCompassHeading); } Thursday, November 3, 11
  • 67. Media Capture <input type="file" id="picker" accept="image/*" capture='camera' > // camcorder // microphone // filesystem Thursday, November 3, 11
  • 68. Media Capture <input type="file" id="picker" accept="image/*" /> <script> var picker = document.getElementById('picker'); picker.onchange = function (e) { var image = picker.files[0]; image.getFormatData( function (data) { console.write(data); } ); }; </script> Thursday, November 3, 11
  • 69. Everything Else :-( Thursday, November 3, 11
  • 71. Object Object.create Object.defineProperty Object.defineProperties Object.getPrototypeOf Object.keys Object.seal Object.freeze Object.preventExtensions Object.isSealed Object.isFrozen Object.isExtensible Thursday, November 3, 11
  • 72. Array.prototype arr.indexOf arr.lastIndexOf arr.every arr.some arr.forEach arr.map arr.filter arr.reduce Thursday, November 3, 11
  • 73. What’s coming down the track? Thursday, November 3, 11
  • 74. ES.6 ‘.next’ ‘Harmony’ Thursday, November 3, 11
  • 75. Block Scope for (...) { let myvar='scoped'; const myconst=42; function myfunc() { //... } } console.log(myvar); //RefError Thursday, November 3, 11
  • 76. Destructuring var [x, y] = [1, 2]; var {a:x, b:y} = {a:1, b:2}; function myfunc( {a:x, b:y} ) {...} myfunc({a:1, a:2}); Thursday, November 3, 11
  • 77. Default Arguments function myfunc(a=1, b=2) { console.log(a); console.log(b); } myfunc(); Thursday, November 3, 11
  • 78. Rest function myfunc(a, ...b) { console.log(a); b.forEach(function (i) { console.log(b); }); } myfunc(1, 2, 3, 4); Thursday, November 3, 11
  • 79. Spread function myfunc(a, b, c, d) { console.log(a); //... } var args = [2, 3, 4]; myfunc(1, ...args); Thursday, November 3, 11
  • 80. Modules module MyModule { export function a() {}; export function b() {}; } import MyModule.*; module Ext = require('http://../ext.js'); Thursday, November 3, 11
  • 81. Classes class MyClass { constructor(a, b) { private a = a; //... } myMethod() { //... } } Thursday, November 3, 11
  • 82. Iterators Generators Comprehensions Thursday, November 3, 11
  • 84. Camera Microphone Contacts Calendar Messaging Telephony NFC... Thursday, November 3, 11
  • 86. Web Components Shadow DOM Model Driven Views Thursday, November 3, 11
  • 87. What does this mean for you? Thursday, November 3, 11
  • 88. Stay on top of change http://blogs.msdn.com/b/ie/ https://developer.mozilla.org http://chromestatus.com Thursday, November 3, 11
  • 89. Stay on top of diversity CanIUse BrowserScope Modernizr DeviceAtlas HTML5 Rocks Thursday, November 3, 11
  • 90. Stay on top of change 100% Support Browsers Capabilities & specifications Thursday, November 3, 11
  • 91. Stay on top of change 100% Support Browsers Polyfills Frameworks Capabilities & specifications Thursday, November 3, 11
  • 92. Relish the opportunity... ...to do amazing things! Thursday, November 3, 11
  • 93. THANKS James Pearce @jamespearce Thursday, November 3, 11