SlideShare a Scribd company logo
<HTML5>
NEW AND IMPROVED


    Timothy Fisher
Who Am I

   Timothy Fisher
   Compuware

      @tfisher
      timothyf@gmail.com
      www.timothyfisher.com
Less Header Code
More Semantic HTML tags
Media Tags
Geolocation
Canvas
Input Types
Form Validation
Local Storage
WebSQL Storage
Offline Applications
Draggable
Cross-Domain Messaging
Web Sockets
Web Workers
History API

HTML5 Support
Progressive Enhancement
HTML5 History

•   Specification of HTML published by W3C

•   W3C HTML5 Spec => 900+ pages

•   Work started on HTML5 in late 2003

•   First Working Draft published January 2008

•   Expected Candidate Recommendation - 2012

•   W3C Recommendation - 2022 or later *

* Requires 2 100% complete and fully interoperable implementations

              http://dev.w3.org/html5/spec/
Less Header Code
Pre HTML5:
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01 Transitional//EN" "http://
www.w3.org/tr/html4/loose.dtd">
<html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Awesome Stuff</title>
    </head>
...

With HTML5:
<!DOCTYPE HTML>
<html>
    <head>
      <meta charset=”utf-8”>
      <title>Awesome Stuff</title>
    </head>
...
No Need for Type Attribute

Pre HTML5:
<script type=”text/javascript” src=”script.js”> </script>
<link type=”text/css” href=”style.css”></link>


With HTML5:
<script src=”script.js”> </script>
<link href=”style.css”></link>
More Semantic HTML Tags
             <div id=”header”>

               <div id=”nav”>




<div id=”sidebar”>     <div id=”article”>




             <div id=”footer”>
More Semantic HTML Tags
            <header>

             <nav>




                       <section>
  <aside>
                         <article>




            <footer>
More Semantic HTML Tags


Output
<output name="result"></output>




Progress
<progress id="p" max=100><span>0</span>%</progress>
More Semantic HTML Tags

Meter
Storage space usage:
<meter value=6 max=8>6 blocks used (out of 8 total)</meter>

Voter turnout:
<meter value=0.75><img alt="75%" src="graph75.png"></meter>

Tickets sold:
<meter min="0" max="100" value="75"></meter>
More Semantic HTML Tags

Details and Summary
<details>
   <summary>
      American League Central Division
   </summary>
   Detroit Tigers<br/>
   Minnesota Twins<br/>
   Chicago White Sox<br/>
   Cleveland Indians<br/>
   Kansas City Royals<br/>
</details>


  Use to create an expanding and contracting element that you can use to hide
  details without JavaScript
More Semantic HTML Tags


Address
<address>
   Written by:<br/>
   <a href="/people/show/23">Timothy Fisher</a>, <br/>
   Address: 25296 Hunter Lane, Flat Rock, MI 48134 <br/>
   Phone: 555-1212
</address>


Address applies to the nearest Article or Body tag.



Prior to HTML5 the Address element applied to the document/body as a whole
More Semantic HTML Tags

  Data Attributes
  <div class="car" data-brand="ford" data-model="mustang">
     <button class="fire">
  </div>

  //Using DOM's getAttribute() property
  var brand=mydiv.getAttribute("data-brand") //returns "ford"
  mydiv.setAttribute("data-brand", "mazda") //changes "data-brand" to "mazda"
  mydiv.removeAttribute("data-brand") //removes "data-brand" attribute entirely

  //Using JavaScript's dataset property
  var brand=mydiv.dataset.brand //returns "ford"
  mydiv.dataset.brand='mazda' //changes "data-brand" to "mazda"
  mydiv.dataset.brand=null //removes "data-brand" attribute

Custom data attribs were always possible but prior to HTML5 they would cause validation errors.
More Semantic HTML Tags
Section, hgroup, Article
<article>
   <hgroup>
       <h1>Mobile Phones</h1>
       <h2>Different Smart Phones</h2>
   </hgroup>
   <p>Some of the more popular mobile smart phones</p>
   <section>
       <h1>Apple iPhone</h1>
       <p>A popular smart phone from Apple.</p>
   </section>
   <section>
      <h1>Android-based Phones</h1>
      <p>A series of smart phones that use the Google Android operating system.</p>
   </section>
</article>

           These elements replace many of your divs
More Semantic HTML Tags


Figure and Figure Caption
<figure>
   <img src="ninja_guy.jpg" alt="A Standing Ninja Guy.">
   <figcaption>Cool Ninja Guy</figcaption>
</figure>




                                                           Cool Ninja Guy


The browser can position the caption for you
More Semantic HTML Tags

Menu and Command
<menu label="Hero List">
  <command type="radio" radiogroup="herolist" label="Spiderman">
  <command type="radio" radiogroup="herolist" label="Superman">
  <command type="radio" radiogroup="herolist" label="Batman">
</menu>




       a simple radio button group
More Semantic HTML Tags

Menu (continued)
<menu type="toolbar">
   <li>
       <menu label="File">
          <button type="button" onclick="file_new()">New...</button>
          <button type="button" onclick="file_open()">Open...</button>
          <button type="button" onclick="file_save()">Save...</button>
          <button type="button"onclick="file_saveas()">Save As...</button>
       </menu>
   </li>
   <li>
       <menu label="Edit">
         <button type="button" onclick="edit_copy()">Copy...</button>
         <button type="button" onclick="edit_cut()">Cut...</button>
         <button type="button" onclick="edit_paste()">Paste...</button>
       </menu>
   </li>
</menu>
Media Tags



<video src=” ironman.ogg” />


Automatically show native controls
<video src=”ironman.ogg” controls />




              http://www.youtube.com/html5
Media Tags


<video controls/>
   <source src=”ironman.mp4” />
   <source src=”ironman.ogg” />
</video>
                                                  ironman.mp4 ironman.ogg


  Specify multiple source elements to support more browsers
             (i.e. mp4 willl work in Safari, ogg will work in Firefox)
Media Tags


<audio src=” teenage_dream.mp3”></audio>


<audio controls>
   <source src=”teenage_dream.mp3”/>
   <source src=”teenage_dream.ogg”/>
</audio>


Provides a download link for non-supporting browsers:
<audio src=”teenage_dream.ogg” autoplay controls loop>
   <a href=” teenage_dream.ogg”>download</a>
</audio>
Native GeoLocation


Build location-aware apps without access to native mobile apis



 navigator.geolocation.getCurrentPosition(
    function(position) {
       // display position
    }
 );
Canvas
A complete drawing and animation API

<canvas id=”square”>
   fallback content
</canvas>

<script>
   // create basic filled square
   canvas = canvas.getElementById(ʻsquareʼ);
   context = canvas.getContext(ʻ2dʼ);
   context.fillStyle = “#000000”;
   context.fillRect(0, 0, 100, 100);
</script>


      http://www.theopensourcery.com/keepopen/2010/html5-canvas-demo/
               http://www.benjoffe.com/code/demos/canvascape/
Input Types


<input type=”email” />

   tel      datetime
   search   date
   email    range
   url      color



       Unsupported browsers default to text type
   Future browsers will display appropriate UI controls
Input Types


Input Type Range + Datalist
<input type="range" min="-100" max="100" value="0"
       step="10" name="power" list="powers">
   <datalist id="powers">
      <option value="0">
      <option value="-30">
      <option value="30">
      <option value="+50">
   </datalist>
Input Types

File Upload Multiple
<input type=file multiple>
Input Types


Datalist

 <input list="movies" />
 <datalist id="movies">
 # <option>The Dark Knight</option>
 # <option>Spiderman 3</option>
 # <option>X-Men</option>
 </datalist>




            Used to provide Auto Complete feature
Form Validation



   <input name="custname" required>

   <script>
      form.checkValidity();
   </script>




By adding ‘required’ attribute you can take advantage of validity checking without custom JavaScript.
Form Validation

Custom Validation
<label>Gender: </label>
<input name=”gender” type="text" oninput="check(this)">

<script>
   function check(input) {
       if (input.value != "male" && input.value != "female") {
            input.setCustomValidity('"' + input.value + '" is not a gender.');
       }
       else {
            // input is good - reset error message
            input.setCustomValidity('');
       }
   }
</script>
Local / Session Storage



sessionStorage.setItem(key, value);
sessionStorage.getItem(key);

localStorage.setItem(key, value);
localStorage.getItem(key);


       Save key/value pairs to a client-side data store implemented by browser
                 Session store expires when the browser is closed
WebSQL Storage

A set of APIs to manipulate client-side databases using SQL
  // open/create a database
  var db = openDatabase(db_name, version, db_desc, est_size);

  // create a table and insert some data
  db.transaction(function (tx) {
    tx.executeSql('CREATE TABLE foo (id unique, text)');
      tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")');
  });

  // select data and display it
  tx.executeSql('SELECT * FROM foo', [], function (tx, results) {
    var len = results.rows.length, i;
    for (i = 0; i < len; i++) {
         alert(results.rows.item(i).text);
    }
  });
Offline Applications

Offline Applications using manifest
<html manifest=”cache.manifest”>
provide a cache.manifest file:
  CACHE MANIFEST
  clock.html                  uses MIME type:
  clock.css                   text/cache-manifest
  clock.js




            Run a web application in offline mode, disconnected from Internet

   Of course your app will still have failures if it tries to pull live data from the Internet
Offline Applications


Detect Online or Offline
window.addEventListener("online", function() {
       do_something();
   }, true);


window.addEventListener("offline", function() {
       do_something();
   }, true);
Draggable

<div draggable=”true”></div>

// set data to access at target
addEvent(div, “dragstart”, function(e) {
     e.dataTransfer.setData(ʻfooʼ, ʻbarʼ);
}, true);

// access data from dragged object
addEvent(div, ʻdragendʼ, function(e) {
     e.dataTransfer.getData(ʻfooʼ);
}, true);


HTML5 drag and drop should work across frames, and across browser windows.

HTML5 drag and drop also allows users to drag and drop data to and from non-web
applications, i.e. out of the browser or into the browser
Cross-Domain Messaging




// sender
var o = document.getElementsByTagName('iframe')[0];
o.contentWindow.postMessage('Hello world', 'http://b.example.org/');


// recipient
addEvent(window, "message", function(e){
  document.getElementById("rcvd_message").innerHTML = e.origin + " said: " + e.data;
});
Editable Content




Turn any element into an editable area
<script>
   document.getElementById(ʻnotepadʼ).contentEditable = true;
</script>
Web Sockets

                               • Opens a persistent connection to the server
                               • Can be used for server to browser push
                               • Restricted communication to origin server
                               • Eliminates need to poll for data



var ws = new WebSocket("ws://friendfeed.com/websocket");
ws.onopen = function() {
   ws.send("This is a message from the browser to the server");
};
ws.onmessage = function(event) {
   alert("The server sent a message: " + event.data);
};
Web Workers

- Provide “threads” for JavaScript execution
- Donʼt have access to DOM or page.
- Have to communicate through postMessage API
Web Workers
In the Browser
// Create a Web Worker
var worker = new Worker(“worker.js”);

// Post a message to the Web Worker
worker.postMessage(0);

// Triggered by postMessage in the Web Worker
worker.onmessage = function(evt) {
    // evt.data is the values from the Web Worker
    alert(evt.data);
};

// Catch Web Worker error
worker.onerror = function(evt) {
    alert(evt.data);
};
Web Workers


In the Web Worker
// Triggered by postMessage in the page
onmessage = function(evt) {
    // evt.data will be 0 here
    for (var i=evt.data, k=1000001; i<k; i++) {
        // Continually sends data back
        postMessage(i);
    };
};
History API

JavaScript API for moving through browser history

window.history.back();
window.history.forward();

window.history.go(2);

window.history.length;

window.history.pushState(data, title, url);
window.history.replaceState(data, title, url);
HTML5 Compatibilty
HTML5Test.com scores browsers according to the following criteria:


          •   Parsing Rules               •   Microdata

          •   Canvas                      •   Web Applications

          •   Video                       •   Geo Location

          •   Audio                       •   WebGL

          •   Local Devices               •   Communication

          •   Elements                    •   Files

          •   Forms                       •   Storage

          •   User Interaction            •   Workers
HTML5 Compatibilty

Safari 5             Chrome 7          Firefox 3.6




           http://www.HTML5test.com/
HTML5 Compatibilty

IE 8             IE 9 Beta          Opera




        http://www.HTML5test.com/
Progressive Enhancement

   •   Use HTML5 when available

   •   Fallback to a different mechanism when not available

   •   Supported by many libraries including jQuery.

if HTML5 video is not supported, flash video will load

  <video controls width="500">
  #    <source src="video.ogg" />
  #    <source src="video.mp4" />
  #    <embed src="http://blip.tv/play/gcMV" type="application/x-shockwave-flash"
               width="1024" height="798" allowscriptaccess="always"
               allowfullscreen="true"></embed>
  </video>
DON’T FORGET CSS3
• Rounded corners
• Box shadows
• Transitions
• Rotate
• Gradients
• Text shadow
• Web fonts
http://www.webhostingsearch.com/20-of-the-best-examples-of-css
Recommended Sites

              http://html5.timothyfisher.com

              http://www.HTML5test.com

              http://html5demos.com

               http://caniuse.com


This Presentation:
http://www.slideshare.net/timothyf/html5-new-and-improved

More Related Content

What's hot (20)

PPTX
Working with LoopBack Models
Raymond Feng
 
PDF
Picking the Right Node.js Framework for Your Use Case
Jimmy Guerrero
 
PDF
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
SPTechCon
 
PPT
Asp.net.
Naveen Sihag
 
PDF
Building Android apps with Parse
DroidConTLV
 
PDF
Easing offline web application development with GWT
Arnaud Tournier
 
PDF
Apache spark with akka couchbase code by bhawani
Bhawani N Prasad
 
ODP
An Overview of Node.js
Ayush Mishra
 
PPTX
Groovy in SOAP UI
ravireddy76
 
PDF
LoopBack: a productivity booster for MEAN
Miroslav Bajtoš
 
PPTX
Ch3 server controls
Madhuri Kavade
 
PPTX
Vaadin
Francisco Humberto
 
PDF
Cooking your Ravioli "al dente" with Hexagonal Architecture
Jeroen Rosenberg
 
PDF
Developing an intranet on office 365
Eric Shupps
 
PDF
Introduction to share point 2010 development
Eric Shupps
 
PPTX
Angular universal
Michael Haberman
 
PDF
Seattle StrongLoop Node.js Workshop
Jimmy Guerrero
 
PDF
Why ruby on rails
Boris Dinkevich
 
PPT
Introduction To Grails
Christopher Bartling
 
PPTX
Microservices/dropwizard
FKM Naimul Huda, PMP
 
Working with LoopBack Models
Raymond Feng
 
Picking the Right Node.js Framework for Your Use Case
Jimmy Guerrero
 
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
SPTechCon
 
Asp.net.
Naveen Sihag
 
Building Android apps with Parse
DroidConTLV
 
Easing offline web application development with GWT
Arnaud Tournier
 
Apache spark with akka couchbase code by bhawani
Bhawani N Prasad
 
An Overview of Node.js
Ayush Mishra
 
Groovy in SOAP UI
ravireddy76
 
LoopBack: a productivity booster for MEAN
Miroslav Bajtoš
 
Ch3 server controls
Madhuri Kavade
 
Cooking your Ravioli "al dente" with Hexagonal Architecture
Jeroen Rosenberg
 
Developing an intranet on office 365
Eric Shupps
 
Introduction to share point 2010 development
Eric Shupps
 
Angular universal
Michael Haberman
 
Seattle StrongLoop Node.js Workshop
Jimmy Guerrero
 
Why ruby on rails
Boris Dinkevich
 
Introduction To Grails
Christopher Bartling
 
Microservices/dropwizard
FKM Naimul Huda, PMP
 

Viewers also liked (15)

PDF
طور نفسك
Ahmed Hassan
 
PDF
Text Formatting+(HTML5)
Ahmed Hassan
 
PPTX
HTML5 Tutorial
Avinash Malhotra
 
PPT
HTML5 & WAI-ARIA - Happy Families
Steven Faulkner
 
PPTX
HTML5 Accessibility
bgibson
 
PPTX
Html 5 Features And Benefits
Software Engineering
 
PDF
HTML 5 - CSS 3 Arabic Book
iTawy Community
 
PPTX
Html5 tutorial for beginners
Singsys Pte Ltd
 
PDF
1 فون جاب
رياض خليفة
 
PDF
دورة CSS3 باللغة العربية
anees abu-hmaid
 
PDF
باللغة العربية HTML5 دورة
anees abu-hmaid
 
PDF
كتاب تعلم Html5 css3
titifcom
 
PDF
أحدث الأدوات والمستجدات في تطوير تطبيقات الأجهزة الذكية
Abdullah AlQasim
 
PPTX
Getting Started with HTML5 in Tech Com (STC 2012)
Peter Lubbers
 
PDF
Www.kutub.info 16076
Abdelaziz Elbaze
 
طور نفسك
Ahmed Hassan
 
Text Formatting+(HTML5)
Ahmed Hassan
 
HTML5 Tutorial
Avinash Malhotra
 
HTML5 & WAI-ARIA - Happy Families
Steven Faulkner
 
HTML5 Accessibility
bgibson
 
Html 5 Features And Benefits
Software Engineering
 
HTML 5 - CSS 3 Arabic Book
iTawy Community
 
Html5 tutorial for beginners
Singsys Pte Ltd
 
1 فون جاب
رياض خليفة
 
دورة CSS3 باللغة العربية
anees abu-hmaid
 
باللغة العربية HTML5 دورة
anees abu-hmaid
 
كتاب تعلم Html5 css3
titifcom
 
أحدث الأدوات والمستجدات في تطوير تطبيقات الأجهزة الذكية
Abdullah AlQasim
 
Getting Started with HTML5 in Tech Com (STC 2012)
Peter Lubbers
 
Www.kutub.info 16076
Abdelaziz Elbaze
 
Ad

Similar to HTML5 New and Improved (20)

PPSX
Introduction to Html5
www.netgains.org
 
PDF
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
Tieturi Oy
 
TXT
TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!
Coulawrence
 
KEY
#NewMeetup Performance
Justin Cataldo
 
KEY
前端概述
Ethan Zhang
 
PDF
HTML5 and the dawn of rich mobile web applications pt 2
James Pearce
 
PDF
PrimeTime JSF with PrimeFaces - Dec 2014
cagataycivici
 
KEY
Html5 For Jjugccc2009fall
Shumpei Shiraishi
 
PDF
Vaadin Components @ Angular U
Joonas Lehtinen
 
PPT
HTML5
mohitrana1641993
 
PDF
Html5ppt
recroup
 
PPTX
HTML5
Brandon Byars
 
PDF
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Phil Leggetter
 
PDF
Pengenalan AngularJS
Edi Santoso
 
PPTX
Design Patterns for JavaScript Web Apps - JavaScript Conference 2012 - OPITZ ...
OPITZ CONSULTING Deutschland
 
PPT
05-06 HTML lecture FOR BS STUDENTS IUB.ppt
allsoftwarekeys
 
PPT
Spsl v unit - final
Sasidhar Kothuru
 
PPTX
Implementation of GUI Framework part3
masahiroookubo
 
PDF
Ajax Performance Tuning and Best Practices
Doris Chen
 
PPTX
lec 14-15 Jquery_All About J-query_.pptx
MuhammadAbubakar114879
 
Introduction to Html5
www.netgains.org
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
Tieturi Oy
 
TURN YOUR CELL PHONE FROM A LIABILITY INTO AN ASSET!
Coulawrence
 
#NewMeetup Performance
Justin Cataldo
 
前端概述
Ethan Zhang
 
HTML5 and the dawn of rich mobile web applications pt 2
James Pearce
 
PrimeTime JSF with PrimeFaces - Dec 2014
cagataycivici
 
Html5 For Jjugccc2009fall
Shumpei Shiraishi
 
Vaadin Components @ Angular U
Joonas Lehtinen
 
Html5ppt
recroup
 
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Phil Leggetter
 
Pengenalan AngularJS
Edi Santoso
 
Design Patterns for JavaScript Web Apps - JavaScript Conference 2012 - OPITZ ...
OPITZ CONSULTING Deutschland
 
05-06 HTML lecture FOR BS STUDENTS IUB.ppt
allsoftwarekeys
 
Spsl v unit - final
Sasidhar Kothuru
 
Implementation of GUI Framework part3
masahiroookubo
 
Ajax Performance Tuning and Best Practices
Doris Chen
 
lec 14-15 Jquery_All About J-query_.pptx
MuhammadAbubakar114879
 
Ad

More from Timothy Fisher (6)

PPTX
Social Media Startup Guide
Timothy Fisher
 
KEY
Developing High Performance Web Apps - CodeMash 2011
Timothy Fisher
 
PDF
JQuery 101
Timothy Fisher
 
PDF
Developing High Performance Web Apps
Timothy Fisher
 
PPT
Getting Social with OpenSocial
Timothy Fisher
 
PPT
Automated Testing With Watir
Timothy Fisher
 
Social Media Startup Guide
Timothy Fisher
 
Developing High Performance Web Apps - CodeMash 2011
Timothy Fisher
 
JQuery 101
Timothy Fisher
 
Developing High Performance Web Apps
Timothy Fisher
 
Getting Social with OpenSocial
Timothy Fisher
 
Automated Testing With Watir
Timothy Fisher
 

Recently uploaded (20)

PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
July Patch Tuesday
Ivanti
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
July Patch Tuesday
Ivanti
 

HTML5 New and Improved

  • 1. <HTML5> NEW AND IMPROVED Timothy Fisher
  • 2. Who Am I Timothy Fisher Compuware @tfisher [email protected] www.timothyfisher.com
  • 3. Less Header Code More Semantic HTML tags Media Tags Geolocation Canvas Input Types Form Validation Local Storage WebSQL Storage Offline Applications Draggable Cross-Domain Messaging Web Sockets Web Workers History API HTML5 Support Progressive Enhancement
  • 4. HTML5 History • Specification of HTML published by W3C • W3C HTML5 Spec => 900+ pages • Work started on HTML5 in late 2003 • First Working Draft published January 2008 • Expected Candidate Recommendation - 2012 • W3C Recommendation - 2022 or later * * Requires 2 100% complete and fully interoperable implementations http://dev.w3.org/html5/spec/
  • 5. Less Header Code Pre HTML5: <!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01 Transitional//EN" "http:// www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Awesome Stuff</title> </head> ... With HTML5: <!DOCTYPE HTML> <html> <head> <meta charset=”utf-8”> <title>Awesome Stuff</title> </head> ...
  • 6. No Need for Type Attribute Pre HTML5: <script type=”text/javascript” src=”script.js”> </script> <link type=”text/css” href=”style.css”></link> With HTML5: <script src=”script.js”> </script> <link href=”style.css”></link>
  • 7. More Semantic HTML Tags <div id=”header”> <div id=”nav”> <div id=”sidebar”> <div id=”article”> <div id=”footer”>
  • 8. More Semantic HTML Tags <header> <nav> <section> <aside> <article> <footer>
  • 9. More Semantic HTML Tags Output <output name="result"></output> Progress <progress id="p" max=100><span>0</span>%</progress>
  • 10. More Semantic HTML Tags Meter Storage space usage: <meter value=6 max=8>6 blocks used (out of 8 total)</meter> Voter turnout: <meter value=0.75><img alt="75%" src="graph75.png"></meter> Tickets sold: <meter min="0" max="100" value="75"></meter>
  • 11. More Semantic HTML Tags Details and Summary <details> <summary> American League Central Division </summary> Detroit Tigers<br/> Minnesota Twins<br/> Chicago White Sox<br/> Cleveland Indians<br/> Kansas City Royals<br/> </details> Use to create an expanding and contracting element that you can use to hide details without JavaScript
  • 12. More Semantic HTML Tags Address <address> Written by:<br/> <a href="/people/show/23">Timothy Fisher</a>, <br/> Address: 25296 Hunter Lane, Flat Rock, MI 48134 <br/> Phone: 555-1212 </address> Address applies to the nearest Article or Body tag. Prior to HTML5 the Address element applied to the document/body as a whole
  • 13. More Semantic HTML Tags Data Attributes <div class="car" data-brand="ford" data-model="mustang"> <button class="fire"> </div> //Using DOM's getAttribute() property var brand=mydiv.getAttribute("data-brand") //returns "ford" mydiv.setAttribute("data-brand", "mazda") //changes "data-brand" to "mazda" mydiv.removeAttribute("data-brand") //removes "data-brand" attribute entirely //Using JavaScript's dataset property var brand=mydiv.dataset.brand //returns "ford" mydiv.dataset.brand='mazda' //changes "data-brand" to "mazda" mydiv.dataset.brand=null //removes "data-brand" attribute Custom data attribs were always possible but prior to HTML5 they would cause validation errors.
  • 14. More Semantic HTML Tags Section, hgroup, Article <article> <hgroup> <h1>Mobile Phones</h1> <h2>Different Smart Phones</h2> </hgroup> <p>Some of the more popular mobile smart phones</p> <section> <h1>Apple iPhone</h1> <p>A popular smart phone from Apple.</p> </section> <section> <h1>Android-based Phones</h1> <p>A series of smart phones that use the Google Android operating system.</p> </section> </article> These elements replace many of your divs
  • 15. More Semantic HTML Tags Figure and Figure Caption <figure> <img src="ninja_guy.jpg" alt="A Standing Ninja Guy."> <figcaption>Cool Ninja Guy</figcaption> </figure> Cool Ninja Guy The browser can position the caption for you
  • 16. More Semantic HTML Tags Menu and Command <menu label="Hero List"> <command type="radio" radiogroup="herolist" label="Spiderman"> <command type="radio" radiogroup="herolist" label="Superman"> <command type="radio" radiogroup="herolist" label="Batman"> </menu> a simple radio button group
  • 17. More Semantic HTML Tags Menu (continued) <menu type="toolbar"> <li> <menu label="File"> <button type="button" onclick="file_new()">New...</button> <button type="button" onclick="file_open()">Open...</button> <button type="button" onclick="file_save()">Save...</button> <button type="button"onclick="file_saveas()">Save As...</button> </menu> </li> <li> <menu label="Edit"> <button type="button" onclick="edit_copy()">Copy...</button> <button type="button" onclick="edit_cut()">Cut...</button> <button type="button" onclick="edit_paste()">Paste...</button> </menu> </li> </menu>
  • 18. Media Tags <video src=” ironman.ogg” /> Automatically show native controls <video src=”ironman.ogg” controls /> http://www.youtube.com/html5
  • 19. Media Tags <video controls/> <source src=”ironman.mp4” /> <source src=”ironman.ogg” /> </video> ironman.mp4 ironman.ogg Specify multiple source elements to support more browsers (i.e. mp4 willl work in Safari, ogg will work in Firefox)
  • 20. Media Tags <audio src=” teenage_dream.mp3”></audio> <audio controls> <source src=”teenage_dream.mp3”/> <source src=”teenage_dream.ogg”/> </audio> Provides a download link for non-supporting browsers: <audio src=”teenage_dream.ogg” autoplay controls loop> <a href=” teenage_dream.ogg”>download</a> </audio>
  • 21. Native GeoLocation Build location-aware apps without access to native mobile apis navigator.geolocation.getCurrentPosition( function(position) { // display position } );
  • 22. Canvas A complete drawing and animation API <canvas id=”square”> fallback content </canvas> <script> // create basic filled square canvas = canvas.getElementById(ʻsquareʼ); context = canvas.getContext(ʻ2dʼ); context.fillStyle = “#000000”; context.fillRect(0, 0, 100, 100); </script> http://www.theopensourcery.com/keepopen/2010/html5-canvas-demo/ http://www.benjoffe.com/code/demos/canvascape/
  • 23. Input Types <input type=”email” /> tel datetime search date email range url color Unsupported browsers default to text type Future browsers will display appropriate UI controls
  • 24. Input Types Input Type Range + Datalist <input type="range" min="-100" max="100" value="0" step="10" name="power" list="powers"> <datalist id="powers"> <option value="0"> <option value="-30"> <option value="30"> <option value="+50"> </datalist>
  • 25. Input Types File Upload Multiple <input type=file multiple>
  • 26. Input Types Datalist <input list="movies" /> <datalist id="movies"> # <option>The Dark Knight</option> # <option>Spiderman 3</option> # <option>X-Men</option> </datalist> Used to provide Auto Complete feature
  • 27. Form Validation <input name="custname" required> <script> form.checkValidity(); </script> By adding ‘required’ attribute you can take advantage of validity checking without custom JavaScript.
  • 28. Form Validation Custom Validation <label>Gender: </label> <input name=”gender” type="text" oninput="check(this)"> <script> function check(input) { if (input.value != "male" && input.value != "female") { input.setCustomValidity('"' + input.value + '" is not a gender.'); } else { // input is good - reset error message input.setCustomValidity(''); } } </script>
  • 29. Local / Session Storage sessionStorage.setItem(key, value); sessionStorage.getItem(key); localStorage.setItem(key, value); localStorage.getItem(key); Save key/value pairs to a client-side data store implemented by browser Session store expires when the browser is closed
  • 30. WebSQL Storage A set of APIs to manipulate client-side databases using SQL // open/create a database var db = openDatabase(db_name, version, db_desc, est_size); // create a table and insert some data db.transaction(function (tx) {   tx.executeSql('CREATE TABLE foo (id unique, text)'); tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")'); }); // select data and display it tx.executeSql('SELECT * FROM foo', [], function (tx, results) {   var len = results.rows.length, i;   for (i = 0; i < len; i++) {    alert(results.rows.item(i).text);   } });
  • 31. Offline Applications Offline Applications using manifest <html manifest=”cache.manifest”> provide a cache.manifest file: CACHE MANIFEST clock.html uses MIME type: clock.css text/cache-manifest clock.js Run a web application in offline mode, disconnected from Internet Of course your app will still have failures if it tries to pull live data from the Internet
  • 32. Offline Applications Detect Online or Offline window.addEventListener("online", function() { do_something(); }, true); window.addEventListener("offline", function() { do_something(); }, true);
  • 33. Draggable <div draggable=”true”></div> // set data to access at target addEvent(div, “dragstart”, function(e) { e.dataTransfer.setData(ʻfooʼ, ʻbarʼ); }, true); // access data from dragged object addEvent(div, ʻdragendʼ, function(e) { e.dataTransfer.getData(ʻfooʼ); }, true); HTML5 drag and drop should work across frames, and across browser windows. HTML5 drag and drop also allows users to drag and drop data to and from non-web applications, i.e. out of the browser or into the browser
  • 34. Cross-Domain Messaging // sender var o = document.getElementsByTagName('iframe')[0]; o.contentWindow.postMessage('Hello world', 'http://b.example.org/'); // recipient addEvent(window, "message", function(e){   document.getElementById("rcvd_message").innerHTML = e.origin + " said: " + e.data; });
  • 35. Editable Content Turn any element into an editable area <script> document.getElementById(ʻnotepadʼ).contentEditable = true; </script>
  • 36. Web Sockets • Opens a persistent connection to the server • Can be used for server to browser push • Restricted communication to origin server • Eliminates need to poll for data var ws = new WebSocket("ws://friendfeed.com/websocket"); ws.onopen = function() { ws.send("This is a message from the browser to the server"); }; ws.onmessage = function(event) { alert("The server sent a message: " + event.data); };
  • 37. Web Workers - Provide “threads” for JavaScript execution - Donʼt have access to DOM or page. - Have to communicate through postMessage API
  • 38. Web Workers In the Browser // Create a Web Worker var worker = new Worker(“worker.js”); // Post a message to the Web Worker worker.postMessage(0); // Triggered by postMessage in the Web Worker worker.onmessage = function(evt) { // evt.data is the values from the Web Worker alert(evt.data); }; // Catch Web Worker error worker.onerror = function(evt) { alert(evt.data); };
  • 39. Web Workers In the Web Worker // Triggered by postMessage in the page onmessage = function(evt) { // evt.data will be 0 here for (var i=evt.data, k=1000001; i<k; i++) { // Continually sends data back postMessage(i); }; };
  • 40. History API JavaScript API for moving through browser history window.history.back(); window.history.forward(); window.history.go(2); window.history.length; window.history.pushState(data, title, url); window.history.replaceState(data, title, url);
  • 41. HTML5 Compatibilty HTML5Test.com scores browsers according to the following criteria: • Parsing Rules • Microdata • Canvas • Web Applications • Video • Geo Location • Audio • WebGL • Local Devices • Communication • Elements • Files • Forms • Storage • User Interaction • Workers
  • 42. HTML5 Compatibilty Safari 5 Chrome 7 Firefox 3.6 http://www.HTML5test.com/
  • 43. HTML5 Compatibilty IE 8 IE 9 Beta Opera http://www.HTML5test.com/
  • 44. Progressive Enhancement • Use HTML5 when available • Fallback to a different mechanism when not available • Supported by many libraries including jQuery. if HTML5 video is not supported, flash video will load <video controls width="500"> # <source src="video.ogg" /> # <source src="video.mp4" /> # <embed src="http://blip.tv/play/gcMV" type="application/x-shockwave-flash" width="1024" height="798" allowscriptaccess="always" allowfullscreen="true"></embed> </video>
  • 45. DON’T FORGET CSS3 • Rounded corners • Box shadows • Transitions • Rotate • Gradients • Text shadow • Web fonts http://www.webhostingsearch.com/20-of-the-best-examples-of-css
  • 46. Recommended Sites http://html5.timothyfisher.com http://www.HTML5test.com http://html5demos.com http://caniuse.com This Presentation: http://www.slideshare.net/timothyf/html5-new-and-improved