2010-05-08 3 views
5

Ich habe Probleme bekommen IE in diesem Zusammenhang das neue Time-Tag zu erkennen. Das alles funktioniert super in FF. Hier ist der Code:Html 5 Time Tag nicht erkannt von IE8 beim Klonen

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

Die HTML etwa wie folgt aussieht:

<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 kann die Zeit-Tag finden, aber es gibt eine Sammlung von 2 Elementen. Ich nehme den Anfang und das Ende an. Ich kann jedoch nicht darauf zugreifen, um es zu ändern. Ich habe val(), html() und text() ausprobiert. Ich kann auch nicht auf das eigentliche HTMLElement zugreifen. Ich kann nicht (0) .innerHTML. Aber, wenn ich .get (0) .tagName es ist tatsächlich die Zeitmarke, die ich habe.

Irgendwelche Ideen? Ich hoffe, das macht Sinn.

Antwort

7

Delan Azabani ist korrekt über IE 8 und es ist die Unterstützung dieser neuen HTML5-Elemente. Es tut es nicht.

Eine nette Möglichkeit, "down-level" Unterstützung zu handhaben, ist dieses Shiv zu verwenden.

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

hier gefunden:http://code.google.com/p/html5shiv/

Es unterstützt auch das Drucken in IE < 9, die ein klebriges Problem ist, wenn Sie sie brauchen.

7

IE 8 nicht unterstützt HTML 5.

bearbeiten

Um die Kompatibilität im DOM für neue Tags zu erhöhen, führen Sie den folgenden Code in einem Skriptblock im 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]); 

Eine andere Bearbeitung: Ich würde .forEach() in den obigen Code verwenden, aber, oh warte ... IE 8 unterstützt JavaScript 1.6 nicht. Ja.

+1

Ich sollte angeben, dass ich html5shiv verwende, um nicht vorhandene Elemente zu erstellen. Das sollte sie richtig machen? – matsientst

+1

Ja. Wenn Sie ein Shiv verwenden, ist der obige Code überflüssig. –