Mam pewne zamieszanie wokół nowego atrybutu async do elementu skryptu w HTML5, który mam nadzieję, że ktoś może dać jasną odpowiedź.Czym dokładnie jest korzyść z atrybutu asynchronicznego HTML5 na elementach skryptu?
Przeglądarki obsługują połączenia równoległe, dlatego obrazy będą pobierane równolegle. Jednak zewnętrzny javascript nie jest pobierany równolegle z innymi zewnętrznymi javascriptami i obrazami. Skrypty blokują ładowanie strony, dopóki nie zostaną pobrane i wykonane.
Aby pobrać skrypt bez blokowania reszty ładowania strony, najczęstszym sposobem jest stworzenie elementu skryptu, jak snippet Google Analytics robi:
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.src = '...ga.js';
ga.async = true;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
nie jestem pewien jak to działa dokładnie - albo
- przeglądarka analizuje i renderuje stronę, a następnie po jej zakończeniu zauważy DOM uległa zmianie, w wyniku skryptu ga.js pobranie i wykonywane
lub
- przeglądarka rozpoczyna pobieranie javascript równolegle z innych środków.
Myślę, że to drugie.
Nowy asynchroniczny fragment kodu Google Analytics zawiera atrybut asynchroniczny HTML5 w utworzonym przez niego elemencie skryptu. To nie pomoże w problemie blokowania strony - zostało to już rozwiązane dzięki technice "Script DOM Element". Co więc asynchronicznie dodaje do obrazu? Według w3schools "jeśli async jest obecny, skrypt jest wykonywany asynchronicznie z resztą strony (skrypt zostanie wykonany, gdy strona będzie kontynuowała parsowanie)".
Zgodnie ze słowami Steve'a Soudersa, "główną zaletą tego [asynchronicznego atrybutu] jest informowanie przeglądarki, że kolejne skrypty mogą być natychmiast wykonywane - nie muszą czekać na ga.js".
Więc czy technika asynchronizacji i technika DOM elementu skryptowego rozwiązują ten sam problem?
Dzięki.
Witam. Dzięki za odpowiedź. Myślę, że zgadzasz się, że nie ma różnicy? Do tego doszedłem, ale zauważyłem, że ten post od szanowanego Steve'a Soudersa sugeruje, że istnieje wyraźna korzyść z używania tagu async ponad techniką elementu DOM skryptu [link] (http: //www.stevesouders .com/blog/2009/12/01/google-analytics-goes-async /). – user265330
@ user265330 - artykuł pochodzi z 2009 roku i nie wspomina o atrybucie ASYNC na znacznikach skryptu. –
Tak, robi. W sekcji "The Async snippet" kod używa zestawu setAttribute do ustawienia asynchronizacji (ok, nie tak, jak w ostatnim fragmencie kodu GA, ale to nie ma znaczenia), a następnie mówi "... atrybut" asynchronizacji "jest ustawiony na "Prawdziwa" Bardzo dobra! Główną zaletą tego jest to, że informuje przeglądarkę, że kolejne skrypty mogą być wykonywane natychmiastowo - nie muszą czekać na ga.js. " – user265330