Page 14 - 6105
P. 14

<P>  Важлива  інформація!  Буде  непереливки,  поки  не
               завантажиться скрипт. </ P>


                      <Script  src  =  "https://js.cx/hello/ads.js?speed=0">  </
               script>

                      <P> ... Важлива інформація! </ P>

                      Для уникнення даної ситуації можна поставити всі подібні скрипти в кінець

               сторінки - це зменшить проблему, але не усуне її повністю, якщо скриптів кілька.

               Припустимо,  в  кінці  сторінки  3  скрипта,  і  перший  з  них  гальмує,  тоді  інші  два

               його  чекатимуть.  Крім  того,  браузер  дійде  до  скриптів,  розташованих  в  кінці

               сторінки,  вони  почнуть  завантажуватися  тільки  тоді,  коли  вся  сторінка

               завантажиться.  А  це  не  завжди  правильно.  Наприклад,  лічильник  відвідуваності

               найбільш  точно  спрацює,  якщо  завантажити  його  раніше.  Тому  «розташувати

               скрипти внизу» - не кращий вихід.

                      Кардинально вирішити цю проблему допоможуть атрибути async або defer:


                      Атрибут  async  підтримується  всіма  браузерами,  крім  IE9-.  Скрипт
               виконується повністю асинхронно. Тобто, при виявленні <script async src = "...">


               браузер не зупиняє обробку сторінки, а спокійно працює далі. Коли скрипт буде
               завантажений - він виконається.


                      Атрибут defer ідтримується всіма браузерами, включно з більшістю старих
               IE. Скрипт також виконується асинхронно, не примушує чекати сторінку, але є дві


               відмінності від async:

                      Перше  -  браузер  гарантує,  що  відносний  порядок  скриптів  з  defer  буде

               збережений.  Тобто,  в  такому  коді  (з  async)  першим  спрацює  той  скрипт,  який

               раніше завантажиться:

                       <Script src = "1.js" async> </ script>

                       <Script src = "2.js" async> </ script>

                      А в такому коді (з defer) першим спрацює завжди 1.js, а скрипт 2.js, навіть

               якщо завантажився раніше, буде його чекати.


                                                                13
   9   10   11   12   13   14   15   16   17   18   19