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 также в состоянии пути к файлу.