2010-05-08 64 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