Html5-boilerplate: Respaldo local de jQuery: Chrome ya no cargará scripts a través de document.write sobre conexiones lentas

Creado en 8 sept. 2016  ·  9Comentarios  ·  Fuente: h5bp/html5-boilerplate

a través de @jpdevries en un comentario sobre 1039

Hablando del respaldo de document.write () (que creo que gobierna), ¿qué pasa con esto?

Chrome ya no cargará scripts que se inserten a través de document.write () cuando la conexión de red sea lenta
https://developers.google.com/web/updates/2016/08/removing-document-write

¿Ya se ha debatido cómo responder a esto?

Todavía no, pero gracias por informarnos sobre esto.

Aquí están las partes interesantes del documento vinculado

Con estos datos en mente, el equipo de Chrome ha anunciado recientemente la intención de intervenir en nombre de todos los usuarios cuando detectemos este patrón incorrecto conocido cambiando cómo se maneja document.write () en Chrome (ver estado de Chrome). Específicamente, Chrome no ejecutará el

help wanted javascript

Todos 9 comentarios

Gracias por abrir el número @roblarsen. Me he estado preguntando si tal vez agregar defer a todos los scripts incluidos resolvería esto.

Los scripts con los atributos 'async' o 'diferir' aún se ejecutarán.

Algo como

<script defer src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script defer>window.jQuery || document.write('<script defer src="js/vendor/jquery-1.12.4.min.js"><\/script>')</script>
<script defer src="js/plugins.js"></script>
<script defer src="js/main.js"></script>

La

<script defer>window.jQuery || document.write('<script defer src="js/vendor/jquery-1.12.4.min.js"><\/script>')</script>

es como una especie de defer inicio. Parece funcionar, pero no estoy seguro de si es correcto.

Hm ... o tal vez los scripts de jquery podrían ser asíncronos y el plugin y los scripts principales se aplazan. Necesito asegurarse de que se carguen después de jQuery, por supuesto.

@jpdevries Creo que reescribir el script de inclusión para usar una interfaz DOM moderna (parentNode.insertBefore) como la que usa Google Analytics también sería algo a tener en cuenta.

Discusiones relacionadas sobre esto que pueden ayudar a tomar la decisión:

@FagnerMartinsBrack Gracias por los enlaces. Tu propio hilo en reddit ayudó a aclarar las cosas. Mientras exista una condición de origen cruzado, no tenemos nada de qué preocuparnos.

Una estrategia de aplazamiento es la mejor opción en mi opinión. No me gusta el async en absoluto, para scripts que deben estar listos lo antes posible como jQuery. He sugerido una implementación a más largo plazo en el hilo de WICG / intervenciones ...

@jpdevries Dos cosas con su código '

  1. Aplazar en un <script> s en línea ha sido obsoleto por WHATWG. La pobre razón insuficiente que se dio fue que nadie lo usó ... Verdadera historia lamentable, pero lamentablemente sucedió ... Así que defer inception no funcionará. :(
  2. La orden de ejecución 'diferir' ha tenido errores en IE 8-9. Y hubo problemas con el evento 'interactivo' que se activó demasiado pronto en IE 9-10, lo que podría afectar la ejecución de scripts 'diferidos'. El último se puede eludir; Sin embargo, eso implica un truco y un script en línea inferior para activar 'interactivo' correctamente ... Por lo tanto, la condición para un texto estándar público que use defer es principalmente esperar que el uso de IE10 muera.

@hexalys 😭 He estado usando el inicio diferido para cosas como CDN de estilo h5bp con respaldo local o detección de características antes de incluir algo como un polyfill. ¡Eso es un fastidio!

¡Clausura! ¡Estaban a salvo!

@roblarsen oh eso es genial! ¿Chrome revirtió su decisión? Tengo curiosidad por saber por qué estamos a salvo porque realmente ❤️ este patrón

@jpdevries Solo se activa cuando la solicitud es de origen cruzado, así que estamos bien. Después de todo, es una alternativa local.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

coliff picture coliff  ·  12Comentarios

roblarsen picture roblarsen  ·  5Comentarios

alrra picture alrra  ·  18Comentarios

sideshowbarker picture sideshowbarker  ·  5Comentarios

coliff picture coliff  ·  10Comentarios