2010-05-08 65 views
5

我一直無法讓IE識別此上下文中的新時間標記。這在FF中非常有效。 下面是代碼:Html 5時間標記在克隆時無法被IE8識別

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看起來是這樣的:

<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可以找到時間標籤,但它返回2個元素的集合。我假設開始和結束。但是,我無法訪問它來修改它。我嘗試過val(),html()和text()。我也不能掉到實際的HTMLElement。我無法獲得(0).innerHTML。但是,如果我.get(0).tagName它實際上是我得到的時間標籤。

任何想法? 我希望這是有道理的。

回答

7

Delan Azabani對於IE 8是正確的,它支持那些新的HTML5元素。它沒有。

處理「低級」支持的好方法是使用這個shiv。

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

這裏找到:http://code.google.com/p/html5shiv/

它甚至還支持在IE 9 <印刷這是一個棘手的問題,如果你需要它。

7

IE 8不支持HTML 5.

編輯

爲了提高兼容性DOM中的新標記,運行在一個腳本塊下面的代碼在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]); 

另一個編輯:我打算在上面的代碼中使用.forEach(),但是,哦,等等...... IE 8不支持JavaScript 1.6。是啊。

+1

我應該說我使用html5shiv來創建不存在的元素。這應該創造他們正確的? – matsientst 2010-05-08 22:48:43

+1

是的。如果你使用shiv,那麼上面的代碼是多餘的。 – 2010-05-09 01:21:40