2012-05-03 4 views
2

Я использую Modernizr для проверки функций, а именно csscolumns, и запускаю Modernizr.load(), чтобы использовать полисполнение css3-multi-column.js, если эта функция недоступна. Все это работает очень хорошо, кроме того, что Modernizr/yepnope вставляет скрипт непосредственно перед элементом сценария Modernizr, а также перед моими таблицами стилей. Поскольку css3-multi-column.js должен быть включен после всех таблиц стилей, которые я бы предпочел, если Modernizr добавит скрипт в конец страницы. Это возможно?Сделать Modernizr.load() добавить скрипты до конца страницы

Это мой код:

Modernizr.load({ 
    test: Modernizr.csscolumns, 
    nope: 'http://host.org/js/libs/css3-multi-column.js'; 
}); 

Это то, что я хотел бы достичь с Modernizr, если это возможно:

if (!Modernizr.csscolumns) { 
    var script = document.createElement('script'); 
    script.type = "text/javascript"; 
    script.src = 'http://host.org/js/libs/css3-multi-column.js'; 
    $('body').append(script); 
} 

ответ

1

Я просто наткнуться на ту же проблему и взглянул на Modernizr (yepnope.js) код, и это, безусловно, невозможно добавить скрипт на конец страницы.

Так что, к сожалению, ваше решение является хорошим.

Еще одно возможное решение - поставить Modernizr в нижней части страницы (но IE8 сломается, см. Нижнюю ноту here)?

Кроме того, в моем случае все мои таблицы стилей были перед сценарием css3-multi-column.js, вставленным Modernizr, но он также не работал. Но используя ваш метод, исправьте проблему. С вашим методом он работает также при добавлении к HEAD. Итак, проблема не в том, где вставлен скрипт, а что-то еще?

+0

Спасибо за ваш ответ! Наверное, мне было слишком лениво смотреть на источник епнопы. Из того, что я помню, Modernizr должен загружаться до любых js или css, что может быть причиной того, что вы не можете заставить 'yepnope.js' +' css3-multi-coluns.js' работать даже при загрузке его после таблиц стилей. Во всяком случае, после публикации моего вопроса я просто принял тот факт, что yepnope не поддерживал добавление скриптов в конец страницы. И хотя мой альтернативный код работает нормально, я просто подумал, что использование yepnope будет более чистым решением. – Simon

+0

Сегодня я попытался загрузить CSS с помощью * Modernizr * таким образом, что был уверен, что он был загружен до 'css3-multi-coluns.js', и это не сработало. Я также добавил 'script.type =" text/javascript "' в код * Modernizr * без особого успеха. Я не вижу разницы между методом, используемым в * Modernizr * и вашим кодом? – Etienne

+0

Я согласен, насколько я могу судить, по сути, что делает Modernizr, устанавливает параметры src/href и другие атрибуты и добавляет элементы сценария и ссылки в документ, т. Е. Почти то же самое, что и мой обходной путь. – Simon