Hacer que Modernizr.load() agregue scripts al final de la página

Estoy usando Modernizr para buscar funciones, a saber, csscolumns, y ejecuto Modernizr.load() para utilizar el css3-multi-columna.js polyfill si esta función no está disponible. Todo esto funciona bastante bien, aparte del hecho de que Modernizr/yepnope inserta el script justo antes del elemento de script de Modernizr y también antes de mis hojas de estilo. Ya que css3-multi-column.js debe incluirse después de todas las hojas de estilo que preferiría si Modernizr agregara el script al final de la página. ¿Es eso posible?

Este es mi codigo:

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

Esto es lo que me gustaría lograr con Modernizr, si es posible:

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

preguntado el 03 de mayo de 12 a las 18:05

1 Respuestas

Acabo de tropezar con el mismo problema y eché un vistazo a la Modernizr (sipnope.js) código y definitivamente no es posible agregar el script al final de la página.

Entonces, desafortunadamente, su solución es la buena.

Otra posible solución es poner Modernizr en la parte inferior de la página (pero IE8 se romperá, vea la nota inferior aquí)?

Además, en mi caso, todas mis hojas de estilo eran anteriores a la css3-multi-column.js guión insertado por Modernizr pero tampoco funcionaba. Pero usando su método solucione el problema. Con su método, también funciona cuando se agrega a HEAD. Entonces, ¿el problema no está en el lugar donde se inserta el script sino en otra cosa?

Respondido 12 Feb 13, 03:02

¡Gracias por tu respuesta! Supongo que era demasiado perezoso para echar un vistazo a la fuente yepnope. Por lo que recuerdo, Modernizr debería cargarse antes que cualquier js o css, lo que podría ser la razón por la que no pudiste obtener yepnope.js + css3-multi-coluns.js trabajando incluso cuando se carga después de las hojas de estilo. De todos modos, desde que publiqué mi pregunta, simplemente acepté el hecho de que no admitía agregar scripts al final de la página. Y aunque mi código alternativo funciona bien, pensé que usar yepnope sería una solución más limpia. - Simon

Hoy traté de cargar el CSS con Modernizr de una manera que estaba seguro de que se cargó antes css3-multi-coluns.js y eso no funcionó. también agregué script.type="text/javascript" de las personas acusadas injustamente llamadas Modernizr código sin mucho éxito. No veo la diferencia entre el método utilizado en Modernizr y tu codigo? - Etienne

Estoy de acuerdo, por lo que puedo decir, esencialmente lo que hace Modernizr es establecer el src/href y otros atributos y agregar secuencias de comandos y elementos de enlace al documento, es decir, más o menos lo mismo que mi solución. - Simon

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.