2010-05-08 9 views
5

Mam problemy z rozpoznaniem nowego znacznika czasu w tym kontekście. Wszystko działa świetnie w FF. Oto kod:Html 5 Znacznik czasu nie został rozpoznany przez IE8 podczas klonowania

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'); 

HTML wygląda tak:

<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 można znaleźć znacznik czasu, ale zwraca kolekcję 2 elementów. Zakładam początek i koniec. Nie mogę jednak uzyskać do niego dostępu, aby go zmodyfikować. Próbowałem val(), html() i text(). Nie mogę również przejść do rzeczywistego HTMLElement. Nie mogę uzyskać (0) .innerHTML. Ale jeśli .get (0) .tagName, to jest to znacznik czasu, który mam.

Wszelkie pomysły? Mam nadzieję, że to ma sens.

Odpowiedz

7

Delan Azabani ma poprawne informacje o IE 8 i obsługuje nowe elementy HTML5. Tak nie jest.

Dobrym sposobem na obsługę "niższego poziomu" jest użycie tej shiv.

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

znaleźć tutaj:http://code.google.com/p/html5shiv/

nawet obsługuje drukowanie w IE < 9, który jest lepki problemem, jeśli jest to potrzebne.

7

IE 8 nie obsługuje HTML 5.

Edit

Aby zwiększyć kompatybilność w DOM nowych znaczników, uruchom następujący kod w bloku skryptu w 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]); 

Kolejna edycja: miałem zamiar użyć .forEach() w powyższym kodzie, ale, och czekać ... IE 8 nie obsługuje JavaScript 1.6. Tak.

+1

Należy stwierdzić, że używam html5shiv do tworzenia nieistniejących elementów. To powinno ich poprawić? – matsientst

+1

Tak. Jeśli używasz shiv, powyższy kod jest zbędny. –

Powiązane problemy