HTML5 Shiv не разбирает достаточно быстро
В настоящее время один из наших веб-дизайнеров работает над сайтом и использует элементы HTML5, которые она стилизует в старых браузерах с использованием хорошо документированного Html5Shiv;
http://css-tricks.com/html5-innershiv/
Сегодня она сообщила о довольно странном поведении, и похоже, что это причина. Первоначально это было очень запутанным, и пошло что-то вроде;
"Страница выглядит хорошо, я обновляюсь, выглядит отлично, обновляюсь несколько раз, и иногда она не применяет мои стили к элементам HTML5"
В настоящее время лучшая теория заключается в том, что shiv не запускается достаточно быстро, и страница загружается до того, как новые элементы будут зарегистрированы. Мне было интересно, если кто-нибудь мог бы предложить надежный способ включения Shiv и убедиться, что он загружен и был проанализирован ДО остальных элементов, так что они определенно будут стилизованы.
РЕДАКТИРОВАТЬ (подробнее)
Шив включается в голову, прямо под заголовком / метатегами;
<!--[if IE]> <script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->
Стилизируемый фрагмент находится в нижнем колонтитуле и является межсайтовым. Размер многих страниц изменится, поскольку они работают на CMS, которую будет использовать наша маркетинговая команда, поэтому я не могу указать точный размер страницы. Все, что я хотел бы сказать, это то, что, если размер страницы является проблемой, и нет обходного пути, может кто-то дать мне знать, так как это будет означать, что мы в принципе не можем использовать HTML5 в этом проекте (или, по крайней мере, нам нужно будет добавить лишнее разметка типа div, чтобы макет не сходил с ума)
РЕДАКТИРОВАТЬ 2
К сожалению, у меня нет шансов опубликовать код - он может быть воссоздан только при очень непонятных обстоятельствах, и проект помечен как "совершенно секретный" на данный момент:(Если никто не знает, то, я думаю, это либо случай "все знают" это случается, но вроде как игнорирует это "или просто что-то еще, кроме шива.
1 ответ
Вы можете попробовать поместить код html5shiv (там не так много) прямо в браузер в том же месте и посмотреть, поможет ли это. Таким образом, он не будет ожидать отдельного HTTP-запроса, который может вызвать проблему.
РЕДАКТИРОВАТЬ Я только что заметил, что вы говорите о innerShiv, а не простой html5Shiv. InnerShiv требуется только тогда, когда вы вставляете элементы HTML5 на лету, например, через jQuery и / или AJAX. Это то, что вы делаете, так как это не похоже на это. Если это так, все, что вам нужно, это html5Shiv.
EDIT2 Ах, ваш код выше использует html5Shiv, а не html5InnerShiv...