
рдХреБрдЫ рдШрдВрдЯреЛрдВ рдкрд╣рд▓реЗ, рдкреГрд╖реНрда рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ HTML5 Rocks рдкрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрджреНрднреБрдд рд▓реЗрдЦ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдореИрдВ рдЗрд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред рдирд┐рдЬреА рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рднреЗрдЬреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдЪрдп
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рд╕рд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреИрд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ, рд╡рд╛рдкрд╕ рдЖрдУ! рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рдЖрдиреБрд╡рдВрд╢рд┐рдХрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд quirks рдХрд╛ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЗрди quirks рдХреЛ рдЬрд╛рдирдиреЗ рд╕реЗ рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝, рдХрдо рд╕реЗ рдХрдо рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рддрд░реАрдХрд╛ рдЪреБрдирдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдпрджрд┐ рдЖрдк рдЬрд▓реНрджреА рдореЗрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реАрдзреЗ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рддреНрд╡рд░рд┐рдд рд╕рдВрджрд░реНрдн рдЧрд╛рдЗрдб рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:

рд╕рднреА WHATWG рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рддрд░рд╣, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕реНрдХреНрд░реИрдмрд▓ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдмрдо рдХреЗ рдкреНрд░рднрд╛рд╡ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ 5 рдмрд╛рд░ рдкрдврд╝рдиреЗ рдФрд░ рдЖрдВрдЦреЛрдВ рд╕реЗ рдЦреВрди рдкреЛрдВрдЫрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдпрд╣ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрдиреЗ рд▓рдЧрддрд╛ рд╣реИ:
рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдиреЗрдХреНрд╢рди
<script src="//other-domain.com/1.js"></script> <script src="2.js"></script>
рдЖрд╣, рдЖрдирдВрджрд┐рдд рд╕рд░рд▓рддрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрджреЗрд╢ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдЧрд╛ред 2. "js" рддрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ "1.js" рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ (рдпрд╛ рдпрд╣ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛), "1.js" рддрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдкрд┐рдЫрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рд╢реИрд▓реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рди рд╣реЛ рдЬрд╛рдП, рдЖрджрд┐ред рдЖрджрд┐
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдЧреЗ рдкреЗрдЬ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдпрд╣ рд╕рдм рд╣реЛрддрд╛ рд╣реИред рдЬрдм рд╕реЗ "рд╡реЗрдм рдХреА рдкрд╣рд▓реА рд╢рддрд╛рдмреНрджреА," рдпрд╣ DOM API рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЙрд╕ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╛рд░реНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
document.write
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕реНрдХреИрди рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕рд╛рдордЧреНрд░реА (рдЬреЗрдПрд╕, рдЪрд┐рддреНрд░, рд╕реАрдПрд╕рдПрд╕, рдЖрджрд┐) рдХреЛ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЕрднреА рднреА рдЕрд╡рд░реБрджреНрдз рд╣реЛрдЧреАред
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЧреБрд░реБ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрддреНрд╡реЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рддрдм рддрдХ рдирд╣реАрдВ рджреЗрдЦреА рдЬрд╛рдПрдЧреА рдЬрдм рддрдХ рдХрд┐ рд╕рднреА HTML рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдФрд░ рд╕реАрдПрд╕рдПрд╕, рдЪрд┐рддреНрд░ рдФрд░ рдЖрдЗрдлреНрд░реЗрдо рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреГрд╢реНрдп рднрд╛рдЧ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж IE! (рдирд╣реАрдВ, рдореИрдВ рд╡реНрдпрдВрдЧреНрдп рдХреЗ рдмрд┐рдирд╛ рд╣реВрдБ)
<script src="//other-domain.com/1.js" defer></script> <script src="2.js" defer></script>
Microsoft рдиреЗ рдЗрди рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреА рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ 4 рдореЗрдВ "рдЖрд╕реНрдердЧрд┐рдд" рдкреЗрд╢ рдХрд┐рдпрд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╣рддрд╛ рд╣реИ: "рдореИрдВ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐
document.write
рдореЗрдВ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рди
document.write
ред рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рд╡рд╛рджреЗ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдЖрдк рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдЬрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред " рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛
HTML4 рдореЗрдВ рдкреЗрд╢ рдХреА рдЧрдИ рдереА рдФрд░ рдпрд╣ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рднреА рджрд┐рдЦрд╛рдИ рджреА рдереАред
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ DOMContentLoaded рдХрд╣реЗ рдЬрд╛рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛, рдЖрджреЗрд╢ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рднреЗрдбрд╝ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмрдо рдХреА рддрд░рд╣, рдбреЗрдлрд░ рдПрдХ рднрдпрдВрдХрд░ рдЧрдВрджрдЧреА рдмрди рдЧрдпрд╛ред "Src" рдФрд░ "defer", рд╕рд╛рде рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП 6 рдкреИрдЯрд░реНрди рд╣реИрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрд╕ рдЖрджреЗрд╢ рдкрд░ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реБрдП рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЛрдЬрд╝рд┐рд▓рд╛ рдЕрджреНрднреБрдд
рдиреЗ 2009 рдореЗрдВ
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ ред
WHATWG рдиреЗ рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рдбрд┐рдлрд╝рд░ рдХрд╛ рдЙрди рд▓рд┐рдкрд┐рдпреЛрдВ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝реЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЬрд┐рдирдореЗрдВ src рдирд╣реАрдВ рдерд╛ред рдЕрдиреНрдпрдерд╛, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж "рдбрд┐рдлрд░" рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд░рдо рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдзрдиреНрдпрд╡рд╛рдж IE! (рдареАрдХ рд╣реИ, рдЕрдм рд╡реНрдпрдВрдЧреНрдп рдХреЗ рд╕рд╛рде)
рдПрдХ рджрд┐рдпрд╛ - рджреВрд╕рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, IE4-9 рдореЗрдВ рдПрдХ рдЕрдкреНрд░рд┐рдп рдмрдЧ
рд╣реИ рдЬреЛ рдЧрд▓рдд рдХреНрд░рдо рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЙрддреНрддреЗрдЬрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
1.js
console.log('1'); document.getElementsByTagName('p')[0].innerHTML = 'Changing some content'; console.log('2');
2.js
console.log('3');
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдкреГрд╖реНрда рдкрд░ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╣реИ, рд▓реЙрдЧреНрд╕ рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреНрд░рдо [1, 2, 3] рд╣реИ, рд▓реЗрдХрд┐рди IE9 рдФрд░ рдХрдо рдореЗрдВ рдкрд░рд┐рдгрд╛рдо [1, 3, 2] рд╣реЛрдЧрд╛ред рдХреБрдЫ DOM рдСрдкрд░реЗрд╢рдВрд╕ IE рдХреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрддрд╛рд░ рдореЗрдВ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред
рдлрд┐рд░ рднреА, рдмрдЧ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЬреИрд╕реЗ рдХрд┐ IE10 рдФрд░ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджреЗрд░реА рд╣реЛрдЧреА рдЬрдм рддрдХ рдХрд┐ рдкреВрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓реЛрдб рдФрд░ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ
DOMContentLoaded
рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд▓реНрдж рд╣реА рд╢реНрд░реЛрддрд╛рдУрдВ рдФрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗ ...
рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП HTML5
<script src="//other-domain.com/1.js" async></script> <script src="2.js" async></script>
HTML5 рдиреЗ рд╣рдореЗрдВ рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреА, "async", рдЬреЛ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╛ рддреЛ рд▓рд┐рдЦреЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкрд╛рд░реНрд╕ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЪреВрдВрдХрд┐ рд╡реЗ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, "2.js" рдХреЛ "1.js" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдЕрдЧрд░ рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ "1.js" рдПрдХ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рдЬрд┐рд╕рдХрд╛ "2.js" рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ "1.js" jQuery рдХреА CDN рдкреНрд░рддрд┐ рд╣реИ, рдЬрд┐рд╕ рдкрд░ "2.js" рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдкреГрд╖реНрда рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЖрдЪреНрдЫрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдмрдо рдХреЗ рдмрд╛рдж ... рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ ... рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдВред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!
рдкрд╡рд┐рддреНрд░ рдХрдВрдШреА рдореЗрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреГрд╖реНрда рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛ рддреБрд░рдВрдд рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ, рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рдерд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, HTML рдЖрдкрд╕реЗ рдирдлрд░рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред
рд╡рд┐рднрд┐рдиреНрди рд╢рд┐рд╖реНрдЯрд╛рдЪрд╛рд░ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рддрд░реАрдХреЛрдВ рд╕реЗ рдЖрдкрдХреЛ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдХрд╣реЗрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдЖрд╡рд╢реНрдпрдХрддрд╛ )ред рджреВрд╕рд░реЛрдВ рдиреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП XHR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ
eval()
, рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ
CORS рд╣реИрдбрд░ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рди
рд╣реЛ ред рдХреБрдЫ рдиреЗ рд╕реБрдкрд░-рдореИрдЬрд┐рдХ рд╣реИрдХ рдХрд╛ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдирд╡реАрдирддрдо рд▓реИрдмрдЬреЗрдПрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣реИрдХ рдиреЗ рд╣рд░ рддрд░рд╣ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдзреЛрдЦрд╛ рджрд┐рдпрд╛, рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рдмрдврд╝рд╛ рджреА, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред LabJS рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╣рд▓реЗ рдЧрд▓рдд рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
. , , mime-, , . , , , HTML5 , .
, , JavaScript- , . , ? , ? ? ? .
DOM !
, HTML5, .
The async IDL attribute controls whether the element will execute asynchronously or not. If the element's "force-async" flag is set, then, on getting, the async IDL attribute must return true, and on setting, the "force-async" flag must first be unsetтАж
" ":
[ '//other-domain.com/1.js', '2.js' ].forEach(function(src) { var script = document.createElement('script'); script.src = src; document.head.appendChild(script); });
. , , mime-, , . , , , HTML5 , .
, , JavaScript- , . , ? , ? ? ? .
DOM !
, HTML5, .
The async IDL attribute controls whether the element will execute asynchronously or not. If the element's "force-async" flag is set, then, on getting, the async IDL attribute must return true, and on setting, the "force-async" flag must first be unsetтАж
" ":
[ '//other-domain.com/1.js', '2.js' ].forEach(function(src) { var script = document.createElement('script'); script.src = src; document.head.appendChild(script); });
. , , mime-, , . , , , HTML5 , .
, , JavaScript- , . , ? , ? ? ? .
DOM !
, HTML5, .
The async IDL attribute controls whether the element will execute asynchronously or not. If the element's "force-async" flag is set, then, on getting, the async IDL attribute must return true, and on setting, the "force-async" flag must first be unsetтАж
" ":
[ '//other-domain.com/1.js', '2.js' ].forEach(function(src) { var script = document.createElement('script'); script.src = src; document.head.appendChild(script); });
. , , mime-, , . , , , HTML5 , .
, , JavaScript- , . , ? , ? ? ? .
DOM !
, HTML5, .
The async IDL attribute controls whether the element will execute asynchronously or not. If the element's "force-async" flag is set, then, on getting, the async IDL attribute must return true, and on setting, the "force-async" flag must first be unsetтАж
" ":
[ '//other-domain.com/1.js', '2.js' ].forEach(function(src) { var script = document.createElement('script'); script.src = src; document.head.appendChild(script); });
. , , mime-, , . , , , HTML5 , .
, , JavaScript- , . , ? , ? ? ? .
DOM !
, HTML5, .
The async IDL attribute controls whether the element will execute asynchronously or not. If the element's "force-async" flag is set, then, on getting, the async IDL attribute must return true, and on setting, the "force-async" flag must first be unsetтАж
" ":
[ '//other-domain.com/1.js', '2.js' ].forEach(function(src) { var script = document.createElement('script'); script.src = src; document.head.appendChild(script); });
рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдФрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ ,
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ , рд╡реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ рдЧрд▓рдд рдХреНрд░рдо рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЧреИрд░-рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[ '//other-domain.com/1.js', '2.js' ].forEach(function(src) { var script = document.createElement('script'); script.src = src; script.async = false; document.head.appendChild(script); });
рдпрд╣ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдпреЛрдЬрди рджреЗрдЧрд╛ рдЬреЛ рд╢реБрджреНрдз HTML рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЧреИрд░-рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рд╡реЗ рд╢реБрджреНрдз HTML рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЧрд┐рд░реЗ рдереЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП, рдЙрдиреНрд╣реЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╕рдордп рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдХреНрд╕рдПрдЪрдЖрд░ рдХреЗ рд╕рд╛рде рдЧреИрд░-рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рднреНрд░рдорд┐рдд рди рдХрд░реЗрдВ, рдЬреЛ рдХрднреА рднреА рдЕрдЪреНрдЫреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ)ред
рдЙрдкрд░реЛрдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд┐рд░ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрд░рдорд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрддрд╛рд░ рд╢реБрд░реВ рдХрд░реЗрдВ, рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд░рдо рдореЗрдВ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред "2.js" рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ "1.js" рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рддрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ "1.js" рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣реБрд░реНрд░реЗ! рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ, рд▓реЗрдХрд┐рди рдСрд░реНрдбрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди!
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди
рд╣рд░ рдЬрдЧрд╣ рдХрд┐рдпрд╛
рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрд╕рд┐рдВрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рд╕рдлрд╛рд░реА 5.0 рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде (5.1 рдкрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдУрдкреЗрд░рд╛ рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдг рдЬреЛ рдПрд╕рд┐рдВрдХреНрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрднреА рднреА рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рд╣реИ, рд╣реИ рдирд╛? рддреЛ?
рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ - рд╣рд╛рдБ, рдЕрдиреНрдпрдерд╛ - рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдирд╣реАрдВред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреМрди рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░реАрд▓реЛрдб рд╕реНрдХреИрдирд░ рд╕реЗ рдЫреБрдкрд╛рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд░ рдЗрди рд╕реНрдХреИрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдЧрд▓реА рдпрд╛рддреНрд░рд╛ рдХрд░рдиреЗ рдФрд░ рдкреЗрдЬ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрди рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкреНрд░рдореБрдЦ рдореЗрдВ рдбрд╛рд▓рдХрд░ рд╡рд╛рдкрд╕ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
<link rel="subresource" href="//other-domain.com/1.js"> <link rel="subresource" href="2.js">
рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреЗрдЬ рдХреЛ 1.js рдФрд░ 2.js рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░реАрд▓реЛрдбрд░реНрд╕ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
link[rel=subresource]
link[rel=prefetch]
рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди
рд╡рд┐рднрд┐рдиреНрди рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЗ рд╕рд╛рдеред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдХреНрд░реЛрдо рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рджреЛ рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд▓рд┐рдВрдХ рддрддреНрд╡реЛрдВ рдореЗрдВ рдкрд╣рд▓рд╛, рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджреВрд╕рд░рд╛ред
рдпрд╣ рд▓реЗрдЦ рдореБрдЭреЗ рдЙрджрд╛рд╕ рдХрд░рддрд╛ рд╣реИ
рд╕реНрдерд┐рддрд┐ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЙрджрд╛рд╕ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд┐рдирд╛ рдЕрднреА рднреА рдХреЛрдИ рдШреЛрд╖рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрдмрдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдЖрджреЗрд╢ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
HTTP2 / SPDY рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдЖрдк рдУрд╡рд░рд╣реЗрдб рдХреЛ рдЙрд╕ рдмрд┐рдВрджреБ рддрдХ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЫреЛрдЯреА, рд╕реНрд╡-рдХреИрд╢реНрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ред рдЬрд░рд╛ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ:
<script src="dependencies.js"></script> <script src="enhancement-1.js"></script> <script src="enhancement-2.js"></script> <script src="enhancement-3.js"></script> тАж <script src="enhancement-10.js"></script>
рдкреНрд░рддреНрдпреЗрдХ рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╣рдо рд╕рдм рдХреБрдЫ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ, рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдЪрд▓рд╛рдПрдВ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рджред рдЬреЗ.рдПрд╕. рдпрд╣ рдПрдХ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд╕реБрдзрд╛рд░ рд╣реИ!
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдШреЛрд╖рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдПред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ async = false рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ-10.js рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди 1-9 рд╕реЗ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЗрд╕реЗ рдмрд┐рдирд╛ рд╣реИрдХ рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...
IE рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ!
IE рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
var script = document.createElement('script'); script.src = 'whatever.js';
IE рдЕрдм "рдЬреЛ рднреАред рдЬреЗрдПрд╕" рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЛ рддрдм рддрдХ рд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред IE рдореЗрдВ "рд░реАрдбрд┐рд╕реНрдЯреЗрдЯрдЪреЗрдВрдЬ" рдИрд╡реЗрдВрдЯ рдФрд░ "рд░реАрдбрд┐рд╕реНрдЯреЗрдЯ" рд╕рдВрдкрддреНрддрд┐ рднреА рд╣реЛрддреА рд╣реИ рдЬреЛ рд▓реЛрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддреА рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
var script = document.createElement('script'); script.onreadystatechange = function() { if (script.readyState == 'loaded') {
рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирдХрд░ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрднрд░рддрд╛ рдореЙрдбрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред IE 6 рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕ рдореЙрдбрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣
async=false
рд░реВрдк рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рджреЛрд╖ рд╣реИред
рдмрд╕! рдореБрдЭреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?
рдареАрдХ рд╣реИ, рдареАрдХ рд╣реИред рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рджреЛрд╣рд░рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрддреНрдХреГрд╖реНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рд╕реБрдЭрд╛рддрд╛ рд╣реВрдВ:
<script src="//other-domain.com/1.js"></script> <script src="2.js"></script>
рдпрд╣ рдПрдХ рд╣реИред рд╢рд░реАрд░ рддрддреНрд╡ рдХреЗ рдЕрдВрдд рдореЗрдВред рд╣рд╛рдВ, рдПрдХ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рд╣реЛрдирд╛ рд░рд╛рдЬрд╛ рд╕реЗрдЬреАрдлрд╕ (рдмреВрдо (рдЧреНрд░реАрдХ рдкреМрд░рд╛рдгрд┐рдХ рдХрдерд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 100 рд╣рд┐рдкрд╕реНрдЯрд░ рдЕрдВрдХ)) рдЬреИрд╕рд╛ рд╣реИред HTML рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рд╕реАрдорд╛рдПрдБ рд╣рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШреЛрд╖рд┐рдд рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╣рдореЗрдВ рдмрдЪрд╛рдПрдЧрд╛ рдФрд░ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╡реЗ рдЪрд▓рддреЗ рд╣реИрдВ рдЙрд╕ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред
Yiwu, рд╡рд╣рд╛рдБ рдХреБрдЫ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рд╣рдо рдЕрдм рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
рдЦреИрд░, рдмреЛрдирд╕ рдЕрдВрдХ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдбрд░рддреЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдХрдИ рд╡рд┐рдЪрд╛рд░ рдЪрд╛рд▓ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░реАрд▓реЛрдбрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдмрд░рд╕реЛрд░реНрд╕ рдШреЛрд╖рдгрд╛ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ:
<link rel="subresource" href="//other-domain.com/1.js"> <link rel="subresource" href="2.js">
рдлрд┐рд░, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд┐рд░ рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ
async=false
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд░реАрдбрд┐рд╕реНрдЯреЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ IE рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд░рд╛рд╕реНрддрд╛ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рджреЗрддрд╛ рд╣реИред
var scripts = [ '1.js', '2.js' ]; var src; var script; var pendingScripts = []; var firstScript = document.scripts[0];
рдХреБрдЫ рддрд░рдХреАрдмреЗрдВ, рдлрд┐рд░ рдиреНрдпреВрдирддрдордХрд░рдг, рдФрд░ рдпрд╣рд╛рдБ 362 рдмрд╛рдЗрдЯреНрд╕ + рдЖрдкрдХреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ URL рд╣реИрдВ:
!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",[ "//other-domain.com/1.js", "2.js" ])
рдХреНрдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдЗрдЯреНрд╕ рдХреЗрд╡рд▓ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВ? рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╢рд░реНрдд рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐
рдмреАрдмреАрд╕реА рдХрд░рддрд╛ рд╣реИ , рддреЛ рдЖрдк рдЗрди рдбрд╛рдЙрдирд▓реЛрдбреЛрдВ рдХреЛ рдЬрд▓реНрджреА рдЪрд▓рд╛рдиреЗ рд╕реЗ рднреА рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рд╢рд╛рдпрдж рдирд╣реАрдВ, рд╢рд░реАрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЪрд┐рдкрдХреЗрдВред
рдХрд╛рд╣реЗ, рдЕрдм рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ WHATWG рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдбрд┐рдВрдЧ рд╕реЗрдХреНрд╢рди рдЗрддрдирд╛ рд╡рд┐рд╢рд╛рд▓ рдХреНрдпреЛрдВ рд╣реИред рдореБрдЭреЗ рдбреНрд░рд┐рдВрдХ рдЪрд╛рд╣рд┐рдПред
рддреНрд╡рд░рд┐рдд рд╕рдВрджрд░реНрдн
рд╕рд░рд▓ рд▓рд┐рдкрд┐ рддрддреНрд╡
<script src="//other-domain.com/1.js"></script> <script src="2.js"></script>
рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╣рддрд╛ рд╣реИ: рдПрдХ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдХрд┐рд╕реА рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдХреНрд░рдо рдореЗрдВ рдХрд░реЗрдВ, рдЬрдм рддрдХ рдЖрдк рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддреЗ рддрдм рддрдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдмреНрд▓реЙрдХ рдХрд░реЗрдВ
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ: рд╣рд╛рдБ рд╕рд░!
рдЖрд╕реНрдердЧрд┐рдд рдХрд░реЗрдВ
<script src="//other-domain.com/1.js" defer></script> <script src="2.js" defer></script>
рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХрд╣рддрд╛ рд╣реИ: DOMContentLoaded рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред "Src" рдХреЗ рдмрд┐рдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП "рдбрд┐рдлрд░" рдкрд░ рдзреНрдпрд╛рди рди рджреЗрдВред
IE <10 рдЬрд╡рд╛рдм: рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдореИрдВ 1.js. рдХреЗ рдмреАрдЪ рдореЗрдВ 2.js рдЪрд▓рд╛рдКрдВрдЧрд╛ рдХреНрдпрд╛ рд╡реЛ рдордЬрд╝рд╛ рд╣реИ ??
рд░реЗрдб рдЬрд╝реЛрди рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддреЗ рд╣реИрдВ: рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрд╕реНрдердЧрд┐рдд рд╣реИ, рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдРрд╕реЗ рд▓реЛрдб рдХрд░реВрдВрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рдерд╛ред
рдмрд╛рдХреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ: рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдореИрдВ "src" рдХреЗ рдмрд┐рдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП "рдбрд┐рдлрд░" рдХреЛ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
async
<script src="//other-domain.com/1.js" async></script> <script src="2.js" async></script>
рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╣рддрд╛ рд╣реИ: рдПрдХ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред
рд░реЗрдб рдЬрд╝реЛрди рдмреНрд░реЙрдЙрдЬрд╝рд░ рдЙрддреНрддрд░: "async" рдХреНрдпрд╛ рд╣реИ? рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВрдВрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рд╡рд╣ рдирд╣реАрдВ рдереАред
рдмрд╛рдХреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ: рд╣рд╛рдБ, рдЕрдЪреНрдЫрд╛ рд╣реИред
рдЕрд╕рддреНрдп рдЕрд╕рддреНрдп
[ '1.js', '2.js' ].forEach(function(src) { var script = document.createElement('script'); script.src = src; script.async = false; document.head.appendChild(script); });
рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╣рддрд╛ рд╣реИ: рдПрдХ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЗрд╕реЗ рдХреНрд░рдо рдореЗрдВ рдХрд░реЗрдВ, рдЬрдм рд╕рдм рдХреБрдЫ рдмреВрдЯ рд╣реЛред
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ <3.6, рдУрдкреЗрд░рд╛ рдЬрд╡рд╛рдм: рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ "async" рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдЬреЗрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рдлрд╝рд╛рд░реА 5.0 рдЬрд╡рд╛рдм: рдореИрдВ "async" рд╕рдордЭрддрд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ JS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдЖрдиреЗ рдкрд░ рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реВрдВрдЧрд╛ред
IE <10 рдЙрддреНрддрд░: рдореБрдЭреЗ "async" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди "onreadystatechange" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ ред
рдЕрдиреНрдп рд░реЗрдб рдЬрд╝реЛрди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ: рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ "async", рдореИрдВ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдЖрдиреЗ рдкрд░ рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реВрдВрдЧрд╛ред
рджреВрд╕рд░реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм: рдореИрдВ рддреБрдореНрд╣рд╛рд░рд╛ рджреЛрд╕реНрдд рд╣реВрдВ, рд╣рдо рдЗрд╕реЗ рдПрдХ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдХреА рддрд░рд╣ рдХрд░реЗрдВрдЧреЗред