script-uri externe, ordinea de execuție
Acest comportament se numește „sincron“. De regulă, este destul de normal, dar există un corolar important.
Dacă scriptul - extern, că în timp ce browser-ul nu va executa, nu se va afișa partea de dedesubt a paginii.
Aceasta este, într-un astfel de document, până când acesta este încărcat și executat big.js. conținut
Acesta va fi ascuns:Și aici, întrebarea - ne dorim cu adevărat? Adică, dacă restul paginii nu poate fi afișată înainte de a încărca script-ul?
Există situații în care noi nu pur și simplu nu doresc o întârziere, dar este chiar periculos.
Și dacă serverul pentru a încărca script-ul extern este supraîncărcat? Vizitatorul în acest caz, poate fi de așteptare un timp foarte lung!
Aici este un exemplu, cu un scenariu asemănător (în valoare de o întârziere artificială pentru a descărca):
Puteți pune toate aceste script-uri în partea de jos a paginii - aceasta va reduce problema, dar nu scapa de ea complet, dacă câteva script-uri. Să presupunem că, la sfârșitul paginii 3 din script-ul, iar primul dintre ele incetineste - se pare, celelalte două vor fi de așteptare - prea rău.
Browser-ul vine, de asemenea, script-uri situate în partea de jos a paginii, acestea vor fi încărcate numai atunci când întreaga pagină pentru a încărca. Și nu este întotdeauna corectă. De exemplu, contorul vizite de lucru mai precise dacă sarcina sa timpurie.
Prin urmare, „pentru a plasa scripturile de mai jos“ - nu cea mai bună soluție.
Pentru a rezolva această problemă în mod fundamental va ajuta la atributele asincronă sau amâna:
Suportat de toate browserele cu excepția IE9-. Script-ul pentru a fi rulat complet asincronă. Asta este, atunci când detectarea
Первое – браузер гарантирует, что относительный порядок скриптов с defer будет сохранён.
То есть, в таком коде (с async ) первым сработает тот скрипт, который раньше загрузится:
А в таком коде (с defer ) первым сработает всегда 1.js. а скрипт 2.js. даже если загрузился раньше, будет его ждать.
Поэтому атрибут defer используют в тех случаях, когда второй скрипт 2.js зависит от первого 1.js. к примеру – использует что-то, описанное первым скриптом.
Второе отличие – скрипт с defer сработает, когда весь HTML-документ будет обработан браузером.
Например, если документ достаточно большой…
…То скрипт async.js выполнится, как только загрузится – возможно, до того, как весь документ готов. А defer.js подождёт готовности всего документа.
Это бывает удобно, когда мы в скрипте хотим работать с документом, и должны быть уверены, что он полностью получен.
async вместе с defer
При одновременном указании async и defer в современных браузерах будет использован только async. в IE9- – только defer (не понимает async ).
Атрибуты async/defer – только для внешних скриптов
Атрибуты async/defer работают только в том случае, если назначены на внешние скрипты, т.е. имеющие src .
При попытке назначить их на обычные скрипты . acestea vor fi ignorate.
Același exemplu cu asincronă:
Când porniți veți vedea că întreaga pagină a fost afișată imediat, și de alertă de la un script extern va apărea mai târziu, atunci când este încărcat script-ul.
Aceste atribute sunt pentru o lungă perioadă de timp „pentru a merge“
Înainte de a introduce tag-ul extern
Rezolva puzzle-uri pentru a vă asigura că ați înțeles totul corect.