2010-05-08 11 views
5

He estado teniendo problemas para que IE reconozca la nueva etiqueta de tiempo en este contexto. Todo esto funciona muy bien en FF. Aquí está el código:Html 5 Time Tag no reconocido por IE8 al clonar

var origComment = $('.articleComment:first div'); 
if (origComment.length > 0) { 
var commentHtml = origComment.clone(true); 
commentHtml.find('time').text('today'); 
var html = '<article class="' + ((side == 'LEFT') ? '' : 'that') + '">' + commentHtml.html() + '</article>'; 
$(html).insertAfter('.articleComment:last'); 

El HTML se ve algo como esto:

<article class="articleComment that"> 
<div id="156" class="parent"> 
    <div class="byline"> 
    <p>Posted <time pubdate="pubdate" datetime="2010-05-07T09:11:08">today</time> by<br/> 
     <a class="username" href="/u/matt">matt</a> 
     </p> 
     <p class="report"><a href="#">Report?</a></p> 
    </div> 
    <div class="comment">left</div> 
</div> 
</article> 

IE puede encontrar la etiqueta de tiempo, pero devuelve una colección de 2 elementos. Asumo el comienzo y el final. Sin embargo, no puedo acceder para modificarlo. He intentado val(), html() y texto(). Tampoco puedo pasar al HTMLElement real. No puedo obtener (0) .innerHTML. Pero, si yo .get (0) .tagName en realidad es la etiqueta de tiempo que tengo.

¿Alguna idea? Espero que esto tenga sentido.

Respuesta

7

Delan Azabani tiene razón acerca de IE 8 y es compatible con los nuevos elementos HTML5. No es así

Una buena manera de manejar el soporte de "nivel inferior" es usar este shiv.

<!--[if lt IE 9]> 
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 

encontrar aquí:http://code.google.com/p/html5shiv/

Incluso soporta la impresión en IE < 9, que es un tema pegajoso, si lo necesita.

7

IE 8 no es compatible con HTML 5.

Editar

Para aumentar la compatibilidad en el DOM para nuevas etiquetas, ejecute el siguiente código en un bloque de script en el head:

var h5tags = 'abbr,article,aside,audio,bb,canvas,datagrid,datalist,\ 
details,dialog,eventsource,figure,footer,header,\ 
hgroup,mark,menu,meter,nav,output,progress,section,\ 
time,video'.split(','); 
for (var i = 0; i < h5tags.length; i++) 
    document.createElement(h5tags[i]); 

Otra edición: Iba a usar .forEach() en el código anterior, pero, oh, espera ... IE 8 no es compatible con JavaScript 1.6. Sí.

+1

Debo decir que estoy usando html5shiv para crear elementos inexistentes. Eso debería crearlos correctos? – matsientst

+1

Sí. Si usa un shiv, el código anterior es redundante. –