UDAV
Постоялец
- Регистрация
- 22 Июн 2007
- Сообщения
- 775
- Реакции
- 153
- Автор темы
- #1
HTML 5 в Internet Explorer
IE как проблема
Сложно сказать, является ли это проблемой или особенностью Internet Explorer, но теги, которые он не знает, он просто не замечает. Конечно, можно сказать, что они нарушают стандарт HTML 4, который поддерживается в IE, но тем не менее, проблемы есть проблемы — даже в самой последней версии IE на новые теги из HTML 5 просто так не повесить стили CSS. В IE 9 это исправят, но у него пока не вышла даже бета-версия.
И как всегда под IE приходиться писать с помощью хаков . Если создать элемент в Javascript document.createElement('article'), то IE начинает видеть новый тег.
Однако чуть позже мы встречаемся с другой проблемой. Этот хак не работает с содержимым, которое добавляется через innerHTML, которые любит использовать jQuery. Но и эта проблема обходиться с помощью JS-манипуляций.
Решение
Вначале разберёмся с нормальными браузерами. Само собой у новых тегов не будет каких-то специальных встроенных стилей (как например для <strong>). Они нам особо и не нужны, но не помешает сделать нужные элементы блочными в CSS:
aside, nav, footer, header, section { display: block }
Код включения HTML 5 тегов в IE уже написан и выложен, так что, чтобы не изобретая велосипед, вставляем в <head> (перед любыми новыми тегами
Большинство HTML 5 сайтов использует скрипт по этому URL, так что велика вероятность, что он уже окажется в кеше браузера.
Решение innerHTML уже оформлено в виде Для просмотра ссылки Войдиили Зарегистрируйся. Скачайте его, подключите к своему сайту, и весь добавляемый HTML оборачивайте с функцию innerShiv(html5).
Пример для jQuery:
Пример на чистом JS:
Для записи $(html5).appendTo('#example'), нужно в innerShiv вторым аргументов передавать false, чтобы она возвращала результат в нужном для jQuery формате:
И пишу:
--- Взято отсюда
IE как проблема
Сложно сказать, является ли это проблемой или особенностью Internet Explorer, но теги, которые он не знает, он просто не замечает. Конечно, можно сказать, что они нарушают стандарт HTML 4, который поддерживается в IE, но тем не менее, проблемы есть проблемы — даже в самой последней версии IE на новые теги из HTML 5 просто так не повесить стили CSS. В IE 9 это исправят, но у него пока не вышла даже бета-версия.
И как всегда под IE приходиться писать с помощью хаков . Если создать элемент в Javascript document.createElement('article'), то IE начинает видеть новый тег.
Однако чуть позже мы встречаемся с другой проблемой. Этот хак не работает с содержимым, которое добавляется через innerHTML, которые любит использовать jQuery. Но и эта проблема обходиться с помощью JS-манипуляций.
Решение
Вначале разберёмся с нормальными браузерами. Само собой у новых тегов не будет каких-то специальных встроенных стилей (как например для <strong>). Они нам особо и не нужны, но не помешает сделать нужные элементы блочными в CSS:
aside, nav, footer, header, section { display: block }
Код включения HTML 5 тегов в IE уже написан и выложен, так что, чтобы не изобретая велосипед, вставляем в <head> (перед любыми новыми тегами
PHP:
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
Решение innerHTML уже оформлено в виде Для просмотра ссылки Войди
Пример для jQuery:
PHP:
$('#example').append(innerShiv("<section><header>jQuery</header></section>"))
PHP:
var s = document.createElement('section');
s.appendChild(innerShiv("<header><Plain JS</header>"));
document.getElementById('example').appendChild(s);
PHP:
$(innerShiv(html5, false)).appendTo('#example')
Но я просто сделал себе функцию $5, заодно убрав лишний код для нормальных браузеров:
if (jQuery.browser.msie) {
window.$5 = function(html5) {
return jQuery(innerShiv(html5, false))
}
} else {
window.$5 = function(html5) {
return jQuery(html5)
}
}
PHP:
$5(html5).appendTo('#example')
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.