Я испытывал затруднения, заставляя IE распознать новый тег Времени в этом контексте. Это все работает отлично в И следующие. Вот код:
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 () и текст (). Я также не могу опуститься до фактического HTMLElement. Я не могу добраться (0) .innerHTML. Но, если я .get (0) .tagName, это на самом деле - тег Времени, который я имею.
Какие-либо идеи? Я надеюсь, что это имеет смысл.
Делан Азабани прав насчет IE 8 и его поддержки этих новых элементов HTML5. Это не так.
Хороший способ справиться с поддержкой "нижнего уровня" - использовать эту заточку.
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
Нашел здесь: http://code.google.com/p/html5shiv/
Он даже поддерживает печать в IE<9, что является сложным вопросом, если вам это нужно.
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. Да.