Несмотря на продолжение применения атрибута async
сценария, продолжаются консультации по размещению скрипта в нижней части документа без атрибута async. Если document.write
можно избежать, возможны ли какие-либо ошибки при использовании async?
Например, если я загружаю скрипт, который я переношу в jQuery $(document).ready(...)
, есть ли вероятность, что при добавлении атрибута async я могу испытывать какие-либо негативные эффекты? Могу ли я надежно указать async для всех таких скриптов?
Если ваши сценарии полагаются на запуск в определенном порядке, вы не можете использовать async
. Это обычно означает, что они полагаются друг на друга.
Недавним примером этого, что случилось со мной, была использование библиотеки подсветки синтаксиса Google. Вы включаете библиотеку и затем вызываете prettyPrint()
чтобы применить подсветку синтаксиса к соответствующим блокам.
<script src='http://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.js' type='text/javascript'></script>
<script type='text/javascript'>prettyPrint();</script>
Поэтому, если все ваши скрипты завернуты в $(document).ready
тогда они, скорее всего, отлично подходят для async
. Вопрос, который вы должны задать, заключается в том, можете ли вы объединить все ваши файлы, поэтому вам нужно только сделать один запрос.
Атрибут defer
похож на async
но ждет, пока HTML не разобратся, а затем запустит скрипты в том же порядке, что и в вашем HTML файле. Это будет работать в вышеуказанной ситуации, если вызов prettyPrint()
был внешним, а не встроенным, поскольку я не считаю, что он применим к встроенным скриптам.