HTML5
         -
The 2012 of the Web
Mozilla is a global non-profit
dedicated to putting you in control
of your online experience and
shaping the future of the Web for
the public good
2012
Mesoamerican Long
  Count calendar
"The beginning of a new era"
HTML4 * 1000

HTML 4000
What is HTML5?
Semantics   APIs
HTML5 semantics
<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta charset="utf-8">
HTML5 Doctor
HTML5 Forms
New form types


<input type="color">             <input type="range">

<input type="date">              <input type="search"
                                    results="5"
<input type="datetime">             autosave="saved-searches">

<input type="datetime-local">    <input type="tel">

<input type="email">             <input type="time">

<input type="month">             <input type="url">

<input type="number">            <input type="week">
New form attributes

<input type="text" autocomplete="off">

<input type="text" autofocus>

<input type="submit" formaction="http://example.org/save" value="Save">

<input type="submit" formenctype="application/x-www-form-urlencoded"
       value="Save with enctype">

<input type="submit" formmethod="POST" value="Send as POST">

<input type="submit" formnovalidate value="Don't validate">

<input type="submit" formtarget="_blank" value="Post to new tab/window">
<input type="text" list="data-list">

<input type="range" max="95">

<input type="range" min="2">

<input type="file" multiple>

<input type="text" readonly>

<input type="text" required>

<input type="text" pattern="[A-Z]*">

<input type="text" placeholder="E.g. Robocop">

<input type="text" spellcheck="true">

<input type="number" step="5">
New form elements



<input type="text" list="data-list">

<datalist id="data-list">
    <option value="Hugo Reyes">
    <option value="Jack Shephard">
    <option value="James 'Sawyer' Ford">
    <option value="John Locke">
    <option value="Sayid Jarrah">
</datalist>
<keygen></keygen>

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

<input type="range" id="range">
<output for="range" id="output"></output>

<progress max="100" value="70">70%</progress>
<input type="range" id="range">
<output for="range" id="output"></output>

<script>
    (function () {
         var theForm = document.getElementById("the-form");
         if ("oninput" in theForm) {
             theForm.addEventListener("input", function () {
                 output.value = range.value;
             }, false);
         }
    })();
</script>
http://www.quirksmode.org/html5/inputs.html

http://www.quirksmode.org/html5/inputs_mobile.html

http://wufoo.com/html5/
Web Storage
sessionStorage.setItem("Charming", "Anthony Weiner");
console.log(sessionStorage.getItem("Charming"));
localStorage.setItem("Occupation", "Politician");
var anthonyWeiner = {
    "Interest" : "Photography",
    "Social" : "Twitter"
};

localStorage.setItem("anthonyWeiner", JSON.stringify(anthonyWeiner));

console.log(typeof JSON.parse(localStorage.getItem("anthonyWeiner")));
Web SQL   IndexedDB
History API
window.history.pushState(state, title, url);
var url = "http://robertnyman.com",
title = "My blog",
state = {
    address : url
};

window.history.pushState(state, title, url);
Web Sockets
LiveConnect
    Forever Frame



       HTTP Long-Polling and XHR Streaming




      What came before WebSockets?

      AJAX
                                             HTTP Polling



Cross Frame Communication
var ws = new WebSocket("ws://robertnyman.com/wsmagic");

// Send data
ws.send("Some data");

// Close the connection
ws.close();
var ws = new WebSocket("ws://robertnyman.com/wsmagic");

// When connection is opened
ws.onopen = function () {
    console.log("Connection opened!");
};

// When you receive a message
ws.onmessage = function (evt) {
    console.log(evt.data);
};

// When you close the connection
ws.onclose = function () {
    console.log("Connection closed");
};

// When an error occurred
ws.onerror = function () {
    console.log("An error occurred");
};
web-socket-js
 Socket.IO
Video
<video controls src="nasa.webm"></video>
<video controls>
    <source src="nasa.mp4"></source>
    <source src="nasa.webm"></source>
    <p>Hello, older web browser</p>
</video>
<video src="http://vid.ly/4w2g7d?content=video"
controls></video>
Canvas
<canvas id="my-canvas" width="500" height="500">
    I am canvas
</canvas>
var canvas = document.getElementById("my-canvas"),
    context = canvas.getContext("2d");

context.fillStyle = "#f00";
context.fillRect(0, 0, 100, 100);

context.clearRect(40, 40, 20, 20);
WebGL
http://code.google.com/p/webglsamples/
Questions
Will HTML5 be
Is it ready?
                  around?


 Why did I hug that bear?
Why did I hug that bear?
Is it ready?
Is it ready?
Is it ready?




http://canisue.com
Will HTML5 be around?
Will HTML5 be around?
Will HTML5 be around?
HTML5
             -
The beauty of the Open Web
Robert Nyman
robertnyman.com/speaking/ robnyman@mozilla.com
robertnyman.com/html5/    Twitter: @robertnyman
robertnyman.com/css3/

HTML5 - The 2012 of the Web