¿Qué navegadores admiten <script async = "async" />?

196

El 1 de diciembre de 2009, Google anunció soporte para el seguimiento asincrónico de Google Analytics .

El seguimiento asincrónico se logra utilizando la directiva asíncrona para la <script>etiqueta.

¿Qué navegadores admiten la directiva asíncrona ( <script async="async" />) y desde qué versión?

knorv
fuente
1
Está justo en esa página a la que se vinculó: "Firefox 3.6 es el primer navegador que ofrece oficialmente soporte para esta nueva característica".
Crescent Fresh el
51
La especificación HTML5 dice que async = "true" es ilegal. Como un atributo HTML booleano, la presencia del atributo indica "verdadero", mientras que la ausencia del atributo es igual a "falso". Si el atributo está presente, los únicos valores válidos para el atributo son "" y "asíncrono".
Joel Mueller
Aquí hay una prueba en vivo de este atributo html5demo.braincracking.org/demo/async.php .
3
Este debería ser un marcador para verificar con frecuencia para cualquier persona interesada en este tema: en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5%29
pumpkinthehead

Respuestas:

162

El soporte asíncrono según lo especificado por google se logra mediante dos partes:

  • usando el script en su página (el script es proporcionado por google) para escribir una etiqueta <script> en el DOM.

  • esa secuencia de comandos tiene el atributo async = "true" para indicar a los navegadores compatibles que puede continuar representando la página.

La primera parte funciona en navegadores sin soporte para <script async..etiquetas, permitiéndoles cargar asíncronamente con un "hack" (aunque bastante sólido), y también permite renderizar la página sin esperar que ga.js sea recuperada.

La segunda parte solo afecta a los navegadores compatibles que entienden el atributo html asíncrono

  • FF 3.6+
  • FF para Android Todas las versiones
  • IE 10+ (comenzando con la vista previa 2)
  • Chrome 8+
  • Chrome para Android Todas las versiones
  • Safari 5.0+
  • iOS Safari 5.0+
  • Android Browser 3.0+ (panal en adelante)
  • Opera 15.0+
  • Opera Mobile 16.0+
  • Opera Mini Ninguno (a partir de 8.0)

La forma "html5 adecuada" de especificar asíncrono es con un <script async src="...", no <script async="true". Sin embargo, inicialmente los navegadores no admitían esta sintaxis, ni admitían establecer la propiedad del script en elementos referenciados. Si quieres esto, la lista cambia:

  • FF 4+
  • IE 10+ (vista previa 2 y superior)
  • Chrome 12+
  • Chrome para Android 32+
  • Safari 5.1+
  • No hay versiones de Android
Philip Rieck
fuente
34
No estoy seguro de que incluso necesite async = "true", simplemente puede escribir 'async'
vsync
44
así que si genero la etiqueta de script como lo hace google, lo que sería correcto: var s = document.createElement ('script'); s.async = 'verdadero'; s.async = verdadero; (Google lo hace de esa manera) o s.async = 'async'; ?
Toby
8
@Tobias: está entremezclando atributos booleanos HTML y las propiedades correspondientes del elemento DOM: el atributo HTML (presente en el marcado y cuando se establecen explícitamente los atributos usando setAttribute, lo que no se recomienda) solo debe estar presente o configurado en una cadena vacía o en sí mismo ( defer="defer", especialmente importante al escribir documentos compatibles con XHTML); al configurar la propiedad del elemento sobre la marcha usando JavaScript, se debe usar s.async = true.
Marcel Korpel
39
@vsync: Incluso no debería serlo true; ya sea async, async=""o async="async".
Marcel Korpel
44
Tenga en cuenta que la publicación vinculada en los conjuntos de preguntas async="true". No es la forma correcta de hacerlo ahora , pero fue la única forma ampliamente compatible de hacerlo ese momento . Por ejemplo, IE10p2 es compatible async="true"pero no es compatibleasync="async"
Philip Rieck
60

Hay dos partes en esta pregunta, realmente.

  1. P: ¿Qué navegadores admiten el atributo "asíncrono" en una etiqueta de script en marcado?

    A: IE10p2 +, Chrome 11+, Safari 5+, Firefox 3.6+

  2. P: ¿Qué navegadores admiten la nueva especificación que define el comportamiento de la propiedad "asíncrona" en JavaScript, en un elemento de script creado dinámicamente?

    A: IE10p2 +, Chrome 12+, Safari 5.1+, Firefox 4+

En cuanto a Opera, están muy cerca de lanzar una versión que admitirá ambos tipos de asíncrono. He estado trabajando con ellos de cerca en esto, y debería salir pronto (¡espero!).

Se puede encontrar más información sobre ordenado-asíncrono (también conocido como "async = false") aquí: http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order

Además, para probar si un navegador admite el nuevo comportamiento de la propiedad dinámica asíncrona: http://test.getify.com/test-async/

Kyle Simpson
fuente
25

Una lista completa de las versiones del navegador que admiten el asyncparámetro está disponible aquí

JeremiahLee
fuente
1

El asyncestá actualmente admitidos por todas las últimas versiones de los principales navegadores. Ha sido compatible durante algunos años en la mayoría de los navegadores.

Puede realizar un seguimiento de qué navegadores admiten asíncrono (y diferir) en el sitio web de MDN aquí:
https://developer.mozilla.org/en-US/docs/HTML/Element/script

brunoais
fuente
Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia. - De la opinión
Michael Gaskill
@MichaelGaskill ¿Es esto suficiente? ¿Quieres que enlace a la respuesta de Philip?
brunoais
0

Acabo de echar un vistazo al DOM (document.scripts [1] .attributes) de esta página que usa google analytics. Te puedo decir que google está usando async = "".

[type="text/javascript", async="", src="http://www.google-analytics.com/ga.js"]
jeekajoo
fuente