JavaScript - - By Sam Deering

jQuery and New HTML5 Essentials

Apart from the snazzy new logo what else does HTML5 offer us as jQuery developers?
I thought I would write a post about the rise of HTML5 and how we might take advantage of it as jQuery gurus.

The Background on HTML5?
HTML5 is a new version that is superseding HTML4.01 and XHTML1.1 as the latest HTML web format to use.
The new W3C HTML5 specification “last call” should be finalised in May 2011 (according to thier website). In particular, HTML5 adds many new syntactical features. These include the < video >, < audio >, and < canvas > elements, as well as the integration of SVG content. These features are designed to make it easy to include and handle multimedia and graphical content on the web without having to resort to proprietary plugins and APIs. Other new elements, such as < section >, < article >, < header >, and < nav >, are designed to enrich the semantic content of documents. New attributes have been introduced for the same purpose, while some elements and attributes have been removed. Some elements, such as < a >, < cite > and < menu > have been changed, redefined or standardised. The APIs and DOM are no longer afterthoughts, but are fundamental parts of the HTML5 specification. HTML5 also defines in some detail the required processing for invalid documents, so that syntax errors will be treated uniformly by all conforming browsers and other user agents. Reference:

Important things to know:

New Tags!!!

New - Defines an article

Deprecated Tags!!!

 	Not supported in HTML5.
 	Not supported in HTML5.
 	Not supported in HTML5.
 	Not supported in HTML5.
Not supported in HTML5. Not supported in HTML5. Not supported in HTML5. Not supported in HTML5. Not supported in HTML5. Not supported in HTML5. <strike> Not supported in HTML5. <tt> Not supported in HTML5. <u> Not supported in HTML5. <xmp> Not supported in HTML5.</code></pre> <p><strong>W3C HTML5 Reference:</strong> <a href=""></a></p> <p><strong>< audio >, < video > replace < object > for display of media content.</strong></p> <pre><code class='language-markup'><!-- The following HTML5 code fragment will embed a WebM video into a web page. --> <video src="movie.webm" poster="movie.jpg" controls> This is fallback text to display if the browser does not support the video element. </video></code></pre> <p>Note that the default supported media format for all browsers has not yet been decided.</p> <p><strong>New doctype: </strong>< !DOCTYPE html> which triggers the standards-compliant rendering mode</p> <p><strong>The Canvas element:</strong> allows for dynamic, scriptable rendering of 2D shapes and bitmap images</p> <h2>Canvas Examples</h2> <p>JavaScript code may access the area through a full set of drawing functions similar to other common 2D APIs, thus allowing for dynamically generated graphics. Some anticipated uses of canvas include building graphs, animations, games, and image composition. Use jQuery for dynamic drawing on canvas?</p> <pre><code class='language-markup'><!-- The following code creates a Canvas element in an HTML page: --> <canvas id="example" width="200" height="200"> This text is displayed if your browser does not support HTML5 Canvas. </canvas></code></pre> <pre><code class='language-javascript'>//This code draws a red rectangle on the screen. var example = document.getElementById('example'); var context = example.getContext('2d'); context.fillStyle = "rgb(255,0,0)"; context.fillRect(30, 30, 50, 50);</code></pre> <p>Reference:<a href=""></a></p> <h2>More Cool HTML5 Canvas Examples</h2> <p><strong>Google logo balls animation</strong><br /> <a href=""> <img src="" alt="google-html5-small" title="google-html5-small" width="176" height="63" class="alignnone size-full wp-image-2336" /></a><br /> <strong>Falling confetti animation</strong><br /> <a href=""><img src="" alt="confetti-html5-small" title="confetti-html5-small" width="125" height="108" class="alignnone size-full wp-image-2343" /></a><br /> <strong>Raining cloud animation</strong><br /> <a href=""><img src="" alt="rainingcloud-html5-small" title="rainingcloud-html5-small" width="177" height="153" class="alignnone size-full wp-image-2344" /></a></p> <p><strong>WebGL: </strong>If web based graphics is your thing you might want to check out WebGL.<br /> It uses the HTML5 canvas element and is accessed using Document Object Model interfaces.<br /> Reference:<a href=""></a></p> <p>The HTML5 specification is expected to include <strong>support for drag & drop</strong>. Yet to be seen but gmail uses web based drag and drop. I prefer to use jQuery for drag and drop stuff!</p> <p><strong>Better MIME Type handling: </strong>read more:</p> <p><strong>The use of Microdata: </strong>This is bascially data nested (html machine readable annotations) within content for search engines and web crawlers better understand what information is contained in a web page. Read more on Microdata vocabularies:</p> <h2>Microdata Example</h2> <pre><code class='language-markup'><section itemscope itemtype=""> Hello, my name is <span itemprop="name">Jhon Doe</span>, I am a <span itemprop="title">graduate research assistant</span> at the <span itemprop="affiliation">University of Dreams</span>. My friends call me <span itemprop="nickname">Jhonny</span>. You can visit my homepage at <a href="" itemprop="url"></a>. </section><section itemprop="address" itemscope itemtype=""> I live at <span itemprop="street-address">1234 Peach Drive</span> <span itemprop="locality">Warner Robins</span> , <span itemprop="region">Georgia</span>. </section> </xmp></u></tt></strike>

A common misconception is that HTML5 can provide animation within web pages, which is untrue. Either JavaScript/jQuery or CSS3 is necessary for animating HTML elements. Animation is also possible using JavaScript/jQuery and HTML 4.

Better Error Handling: A HTML5 (text/html) browser will be flexible in handling incorrect syntax.

HTML5 is designed so that old browsers can safely ignore new HTML5 constructs. No more Tag Soup!

Improvements on File API: Alot of reading material on the Official W3C Working Draft:

Browser Testing

I've tested HTML5 using firefox 3.6 using this website analysis tool and it seems to be only just beating IE and lagging behind the other 3 main browsers. Not sure how accurate this tool is but the results look promising for Google Chrome.

The latest browsers HTML5 scores:

  1. Google Chrome 10.0.648 - 288 points
  2. Opera 11.1 - 244 points
  3. Apple Safari 5.0.3 - 228 points
  4. Mozilla Firefox 3.6 - 155 points
  5. Microsoft Internet Explorer 9 - 130 points

Final Thoughts:
Because the specification has not yet been finalised I would suggest making sure the tags your using are widely supported by the browsers your targeting based on their layout engines. See this comparison table to check support for elements, attributes, Globals, Forms, API's and others. Pay perticular attention to Gecko (Firefox), Trident (Internet Emplorer) and Webkit (Safari/Chrome) layout engines. More on jQuery and HTML5 to come!!!