Заставить Modernizr.load() добавлять скрипты в конец страницы

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

Это мой код:

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);
}

person Simon    schedule 03.05.2012    source источник


Ответы (1)


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

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

Другим возможным решением является размещение Modernizr внизу страницы (но IE8 не работает, см. примечание внизу здесь)?

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

person Etienne    schedule 12.02.2013
comment
Спасибо за Ваш ответ! Я думаю, мне было лень взглянуть на источник yepnope. Насколько я помню, Modernizr должен загружаться перед любыми js или css, возможно, поэтому вы не могли заставить работать yepnope.js + css3-multi-coluns.js даже при загрузке после таблиц стилей. В любом случае, после публикации моего вопроса я просто принял тот факт, что yepnope не поддерживает добавление скриптов в конец страницы. И хотя мой альтернативный код работает нормально, я просто подумал, что использование yepnope будет более чистым решением. - person Simon; 12.02.2013
comment
Сегодня я попытался загрузить CSS с помощью Modernizr так, как я был уверен, что он был загружен до css3-multi-coluns.js, и это не сработало. Я также без особого успеха добавил script.type="text/javascript" в код Modernizr. Я не вижу разницы между методом, используемым в Modernizr, и вашим кодом? - person Etienne; 13.02.2013
comment
Я согласен, насколько я могу судить, по сути, Modernizr устанавливает src/href и другие атрибуты и добавляет элементы script и link в документ, то есть почти то же самое, что и мой обходной путь. - person Simon; 13.02.2013