Quali browser supportano <script async = “async” />?


196

Il 1 ° dicembre 2009, Google ha annunciato il supporto per il monitoraggio asincrono di Google Analytics .

Il tracciamento asincrono viene ottenuto utilizzando la direttiva asincrona per il <script>tag.

Quali browser supportano la direttiva asincrona ( <script async="async" />) e da quale versione?


1
È proprio sulla pagina a cui ti sei collegato: "Firefox 3.6 è il primo browser a offrire ufficialmente supporto per questa nuova funzionalità" FWIW è una funzionalità HTML5, che sta rapidamente ottenendo un supporto sempre migliore.
Crescent Fresh,

51
Le specifiche HTML5 indicano che async = "true" è illegale. Come attributo HTML booleano, la presenza dell'attributo indica "vero", mentre l'assenza dell'attributo equivale a "falso". Se l'attributo è presente, gli unici valori validi per l'attributo sono "" e "asincrono".
Joel Mueller,

Ecco un test dal vivo di questo attributo html5demo.braincracking.org/demo/async.php .

3
Questo dovrebbe essere un segnalibro da verificare frequentemente per chiunque sia interessato a questo problema: en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5%29
pumpkinthehead

Risposte:


162

Il supporto asincrono come specificato da google viene ottenuto utilizzando due parti:

  • usando lo script sulla tua pagina (lo script è fornito da google) per scrivere un tag <script> sul DOM.

  • quello script ha l'attributo async = "true" per segnalare ai browser compatibili che può continuare a visualizzare la pagina.

La prima parte funziona sui browser senza supporto per i <script async..tag, consentendo loro di caricare asincroni con un "hack" (anche se piuttosto solido) e consente anche il rendering della pagina senza attendere il recupero di ga.js.

La seconda parte riguarda solo i browser compatibili che comprendono l' attributo html asincrono

  • FF 3.6+
  • FF per Android Tutte le versioni
  • IE 10+ (a partire dall'anteprima 2)
  • Chrome 8+
  • Chrome per Android Tutte le versioni
  • Safari 5.0+
  • iOS Safari 5.0+
  • Android Browser 3.0+ (nido d'ape in su)
  • Opera 15.0+
  • Opera Mobile 16.0+
  • Opera Mini Nessuno (a partire da 8.0)

Il modo "html5 corretto" per specificare asincrono è con un <script async src="...", no <script async="true". Tuttavia, inizialmente i browser non supportavano questa sintassi, né supportavano l'impostazione della proprietà dello script su elementi di riferimento. Se lo desideri, l'elenco cambia:

  • FF 4+
  • IE 10+ (anteprima 2 e successive)
  • Chrome 12+
  • Chrome per Android 32+
  • Safari 5.1+
  • Nessuna versione Android

34
Non sono nemmeno sicuro che tu abbia bisogno di async = "true", puoi semplicemente scrivere 'async'
vsync

4
quindi se generi il tag script come fa google - quale sarebbe corretto: var s = document.createElement ('script'); s.async = 'true'; s.async = true; (google lo fa in questo modo) o s.async = 'async'; ?
Toby,

8
@Tobias: stai mescolando gli attributi booleani HTML e le corrispondenti proprietà dell'elemento DOM: l'attributo HTML (presente nel markup e quando si imposta esplicitamente gli attributi usando setAttribute, che non è raccomandato) dovrebbe essere presente o essere impostato su una stringa vuota o su se stesso ( defer="defer", particolarmente importante quando si scrivono documenti conformi a XHTML); quando si imposta la proprietà dell'elemento al volo usando JavaScript, si dovrebbe usare s.async = true.
Marcel Korpel,

39
@vsync: nemmeno dovrebbe essere true; o async, async=""oppure async="async".
Marcel Korpel,

4
Nota che il post è collegato nei set di domande async="true". Non è il modo corretto di farlo ora , ma era l'unico modo ampiamente supportato per farlo allora . Ad esempio IE10p2 supportato async="true"ma non supportatoasync="async"
Philip Rieck,

60

Ci sono due parti in questa domanda, davvero.

  1. D: Quali browser supportano l'attributo "asincrono" su un tag di script nel markup?

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

  2. D: Quali browser supportano la nuova specifica che definisce il comportamento della proprietà "asincrona" in JavaScript, su un elemento di script creato dinamicamente?

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

Per quanto riguarda Opera, sono molto vicini al rilascio di una versione che supporterà entrambi i tipi di asincrono. Ho lavorato a stretto contatto con loro su questo, e dovrebbe uscire presto (spero!).

Maggiori informazioni su order-async (aka, "async = false") sono disponibili qui: http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order

Inoltre, per verificare se un browser supporta il nuovo comportamento dinamico della proprietà asincrona: http://test.getify.com/test-async/


25

Un elenco completo delle versioni del browser che supportano il asyncparametro è disponibile qui



1

Il asyncè attualmente supportata da tutte le ultime versioni dei principali browser. È supportato da alcuni anni sulla maggior parte dei browser.

Puoi tenere traccia di quali browser supportano l'asincronizzazione (e il differimento) nel sito Web MDN qui:
https://developer.mozilla.org/en-US/docs/HTML/Element/script


Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
Michael Gaskill,

@MichaelGaskill È abbastanza? Vuoi che mi colleghi alla risposta di Philip?
brunoais,

0

Ho appena dato un'occhiata al DOM (document.scripts [1] .attributes) di questa pagina che utilizza Google Analytics. Posso dirti che google sta usando async = "".

[type="text/javascript", async="", src="http://www.google-analytics.com/ga.js"]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.