Modernizr vs HTML shiv
Если мне нужны только старые браузеры, чтобы распознавать теги HTML5, которые я должен использовать, Modernizr или популярный HTML5 shiv?
А также, если мне не нужно стилизовать эти теги HTML5, нужны ли мне браузеры, чтобы их распознавать? Или это необходимо только при добавлении CSS в эти теги?
Спасибо!
Ответы
Ответ 1
html5shiv в основном позволяет IE распознавать и стилировать элементы HTML5, в то время как Modernizr обеспечивает те же функции обнаружения признаков, которые поддерживаются броузером.
Итак, чтобы ответить на ваш вопрос, HTML5 shiv должно быть достаточным для распознавания тегов HTML5 в IE. (обратите внимание, что я говорю IE здесь, так как это то, что цели html5shiv, не уверен, что вы имеете в виду, когда говорите старые браузеры)
Для второй части, даже если вы не хотите стилизовать теги HTML5, я бы посоветовал использовать shiv, поскольку браузер может отображать их неправильно или вообще не работать, поэтому лучше быть в безопасности.
Ответ 2
HTML5 Shiv меньше, и если вам не нужны некоторые функции обнаружения Modernizr, перейдите на shiv.
Размер файла очень важен, поскольку он всегда находится в начале html-документа и блокирует загрузку дополнительных ресурсов до полного выполнения.
Поскольку он необходим только для старых браузеров, я использую следующий код:
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
Вы можете удалить теги html, которые вы не используете, но тогда вы не сможете использовать файл, размещенный в Google.
Ответ 3
Вы также можете использовать Modernizr для загрузки определенного файла, если браузер поддерживает определенные функции CSS или HTML5.
Скажем, если браузер не поддерживает "canvas" как элемент HTML5 и "fontface" как свойство CSS3
Modernizr.load({
test: Modernizr.fontface && Modernizr.canvas, // Test if the browser supports it or not
yep : '/path-to/html5-css3-attributes.css', // If browser supports it, load this file
nope: '/path-to/old-css-attributes.css' // If NOT, load this instead
});
Вы можете использовать .js также в состоянии пути к файлу.