Middle
რა განსხვავებაა <script>, <script async> და <script defer> ტეგებს შორის?
sobes.tech AI
პასუხი AI-სგან
<script>: HTML-ის ანალიზი შეჩერდება, სკრიპტი იტვირთება და შესრულდება, შემდეგ HTML-ის ანალიზი განახლდება. ბლოკავს რენდერირებას.<script async>: სკრიპტი იტვირთება ასინქრონულად, პარალელურად HTML-ის ანალიზთან ერთად. როგორც კი სკრიპტი იტვირთება, HTML-ის ანალიზი შეწყდება სკრიპტის შესასრულებლად, შემდეგ განახლდება. ასინქრონული სკრიპტების შესრულების წესს გარანტია არაა.<script defer>: სკრიპტი იტვირთება ასინქრონულად, პარალელურად HTML-ის ანალიზთან ერთად. შესრულება გადადებულია HTML-ის სრული ანალიზისა და DOM-ის მშენებლობის დასრულებამდე. გადადებული სკრიპტების წესრიგი შენარჩუნებულია მათი დოკუმენტში განლაგების მიხედვით.
აქ არის სქემა, რომელიც მიმოიხილავს განსხვავებებს:
| ატრიბუტი | იტვირთება | შესრულება | HTML-ის ანალიზის ბლოკირება | სკრიპტების წესრიგი |
|---|---|---|---|---|
| არ არის | სინქრონი | იტვირთვისთანავე | დიახ | გარანტირებული |
async |
ასინქრონული | იტვირთვისთანავე (თუ HTML ჯერ კიდევ ანალიზდება) | დიახ (შესრულების დროს) | არ არის გარანტირებული |
defer |
ასინქრონული | HTML-ის სრული იტვირთვისა და DOM-ის მშენებლობის შემდეგ | არა (მხოლოდ შესრულების დროს, მაგრამ HTML-ის შემდეგ) | გარანტირებული |