вы можете использовать это таким образом.Но я не думаю, что это хорошая идея.webshims lib добавляет несколько приятных расширений к веб-формам (всплывающее сообщение об ошибке стилизации / изменение текста проверки), а также исправляет некоторые ошибки, которые не были обнаружены в Modernizr.Кроме того, я почти уверен, что вы не увидите улучшения производительности (polyfiller.js слишком мал).Фактически из-за того, что вы сначала загружаете polyfiller, а затем прокладки, у вас будет небольшой «штраф» за производительность для многих браузеров.Здесь сказано, как вы могли бы сделать это:
Я добавил это предупреждение, потому что я знаю, что многие люди просто добавляют все в обратный вызов DOM-Ready.
//this is not what you should do:
$(document).ready(function(){
$.webshims.polyfill('forms');
});
//instead do this:
$.webshims.polyfill('forms');
$(document).ready(function(){
//DOM and forms feature are available
});
Если вы хотите загружать polyfill.js динамически, вам нужно сделать еще 2 вещи:
- указать путь к полифиллам (это не требуется при обычном внедрениипотому что мы можем получить путь к сценарию последнего сценария)
Вы делаете это следующим образом:
$.webshims.loader.basePath = 'path-to-shims-folder/';
$.webshims.polyfill();
- Только если вы не хотите писать сценарийфункция HTML5 в DOM-Ready (нет, если вы хотите написать скрипт для функции submit, invalid, input и т. д.)
Вы должны использовать дополнительный метод ready из webshims, потому что DOM-Готовность может уже наступить до загрузки сценариев (обычно webshims задерживает событие готовности, чтобы сделать эту обработку гладкой)
Это можно сделать с помощью следующего кода:
$.webshims.ready('forms DOM', function(){
//give me the validationMessage of the first input
alert($('input').attr('validationMessage');
});
Если вывам нужны только стандартные функции и вы не хотите создавать сценарии для веб-узлов, вот что вам нужно:
yepnope({
test: blah,
nope: '/_scripts/polyfiller.js',
complete: function () {
$.webshims.loader.basePath = '/_scripts/shims/';
$.webshims.polyfill('forms');
}
});
Если вы хотите создавать сценарии сразу после DOM-Ready / Feature-Loading, вы должны сделать следующее:
yepnope({
test: blah,
nope: '/_scripts/polyfiller.js',
complete: function () {
$.webshims.loader.basePath = '/_scripts/shims/';
$.webshims.polyfill('forms');
$.webshims.ready('forms DOM', function(){
//give me the validationMessage of the first input
alert($('input').attr('validationMessage');
});
}
});
В обоих случаях скрипт предупреждаетngs останется, но их увидят только заинтересованные разработчики.
Некоторая информация о текущем состоянии форм webshims lib версии 1.5.2 / HTML5.Есть две известные проблемы:
- вызов $ .webshims.activeLang изначально не будет работать (этот метод был перенесен с polyfiller на Domextend)
- Я неправильно понял часть HTML5спецификация (и смешанная моя реализация со старой спецификацией) о проверке интерактивных ограничений против проверка статических ограничений .В результате Opera и моя реализация checkValidity неверны, поэтому не используйте это: -).
Обе ошибки уже исправлены.Я потрачу некоторое время на дополнительные тесты, так что вы можете ожидать баг-релиз в эти выходные :-).Если вам нужны некоторые из этих функций, вы можете получить текущую основную ветку (она достаточно стабильна, но мне нужно провести дополнительное тестирование x-браузера перед ее выпуском)
Что-то о некоторых правилах производительности:
Большинство правил были написаны в 2006 году. С тех пор многое изменилось:
- JS больше не блокируется полностью.(только IE6 и IE7 имеют эти проблемы. но 80% браузеров не имеют)
- Большинство браузеров могут загружать более 2 (в основном от 4 до 8) файлов одновременно
Из моих тестов нагрузка между 6 и 12 !!!(да 12 файлов) js-файлы намного быстрее, чем загрузка одного js-файла (тест проводился на нескольких реальных веб-сайтах с различным количеством и размером CSS и изображений).
Помещение JS внизу неуменьшить время загрузки страницы.Помещение JS внизу только уменьшает так называемое время «белой страницы», но это всегда приводит к тому, что Flash не имеет стиля и не ведет себя.Если вам не нравится FOUC, поставьте JS наверху.Если вам нужен микс, используйте загрузчик сценариев (сокращая время белой страницы с меньшим количеством FOUC) в заголовке HTML и загружайте свои сценарии оттуда.