HTML5
Categorias

Habilitando HTML 5 no Internet Explorer 8

De acordo com o NetMarketShare.com, o Internet Explorer 8 ainda responde por 22% dos navegadores desktop. É uma porcentagem bastante alta para um navegador tem um suporte quase nulo para HTML5.

Todas aquelas tags novas como ARTICLE, VIDEO, AUDIO ou HEADER são completamente ignoradas pelo jurássico programa da Microsoft.

Embora o recente IE11 esteja crescendo rápido, ainda vai demorar para o IE8 deixar de ser um obstáculo para a chegada do HTML 5.

Ou será que não?

O programador Jonathan Neal criou um script leve e simples que faz a mágica que a Microsoft não fez: permite que o Internet Explorer 8 entenda e faça alguma coisa útil com as novas tags do HTML 5. Chamado de HTML Shiv, o código está disponível em https://html5shiv.googlecode.com/svn/trunk/html5.js.

Para usar o HTML Shiv corretamente, você devem acrescentar uma tag condicional para que seu conteúdo só seja carregado por versões do Internet Explorer inferiores à versão 9:

Você também pode copiar e colar o código abaixo em um arquivo .js e salvá-lo no seu servidor, se não desejar referenciar para o arquivo no Google Code:

/*
 HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x";
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d

Neste caso sua tag condicional deverá referenciar o arquivo no seu servidor:

A partir daí, é usar as novas tags do HTML 5 sem medo de que o Internet Explorer 8 (ou inferior) ignore seu código. Não espere ter acesso à todas as vantagens e atributos disponíveis, mas já é um bom substituto a um suporte autêntico.