рджреВрд╕рд░реЗ рджрд┐рди рд╕рд╛рдЗрдЯ рдХреЗ рдЙрджреНрдШрд╛рдЯрди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдХреЗрд╡рд▓ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдореЗрдВ рдЗрдХрдЯреНрдареА рд╣реБрдИ рдФрд░ рдСрдмрдлреНрдпреВрдЬрди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХреА рдЧрдИ, рдЬрд┐рд╕рдХрд╛ рд╡рдЬрди 500kB рд╕реЗ рдЕрдзрд┐рдХ рдерд╛, рдФрд░ рдлрд┐рд░ рднреА рдПрдХ рдмрдбрд╝реА рд╕реАрдПрд╕рдПрд╕ рднреА рд╣реИред
рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЬрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдлрд╛рдЗрд▓реЗрдВ рдХреИрд╢ рдХреА рдЬрд╛рддреА рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рд▓реНрдб рдХреЗ рдмрд╛рдж рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓ рдЧрдпрд╛ рд╣реИ) рдХреЛ рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдмрдбрд╝реА рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрдВрдЬрди рд╣реИ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдкреГрд╖реНрдареЛрдВ (рдЬреЗрдПрд╕ рдкреЗрдЬ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рдбреЗрдЯрд╛) рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдорд┐рдиреА-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдЧреАред
рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдПрдХ рдФрд░ рдкреЗрдЬ рдорд┐рд▓рд╛, рдЬрд┐рд╕ рдкрд░ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдЧрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рдереАред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рд╕рдлрд╝реЗрдж рд╕реНрдХреНрд░реАрди рдХреЛ
рдШреВрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред
рд╡рд┐рдзрд┐ IE9 (
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде), IE10 рдФрд░ рдКрдкрд░ - рдкреВрд░реА рддрд░рд╣ рд╕реЗ, рд╕рд╛рде рд╣реА рд╕рднреА рдкреНрд░рдореБрдЦ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреНрд░реЛрдо, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдУрдкреЗрд░рд╛, рд╕рдлрд╛рд░реА рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред
рд╢реИрд▓рд┐рдпреЛрдВ.progress-bar { margin: 200px auto; top : -4px; display: none; width : 400px; border: 1px solid gray; -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; } .progress-bar div { height : 16px; width : 0; background: lightgray; -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; } .progress-bar-text { text-align: center; margin-top: 200px; }
рд╕рдмрд╕реЗ рд╕рд░рд▓ рд▓реЗрдЖрдЙрдЯ:
<body> <div class="progress-bar"> <div id="progressBar"></div> </div> <div id="loadingPanel" class="progress-bar-text"> ... ... </div> </body>
рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрднреА рднреА jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА, рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рднреА рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдереЛрдбрд╝рд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг (рдореИрдВрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛)ред
рд▓реЛрдб рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рд╕реВрдЪреА рдлрд╝рд╛рдЗрд▓рд▓рд┐рд╕реНрдЯ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдЧреАред
var progressWidth = 0, fileList = [ {type : 'style', url : '/css/bundle.css'}, {type : 'script', url : '/js/bundle.js'} ];
рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдЗрд╕реЗ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдХреЙрд▓рдмреИрдХ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
function loadFiles(callback) { if (loaded) {
рд▓реВрдк рдореЗрдВ, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реА рдкреНрд░рдЧрддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред
рд▓реЗрдХрд┐рди рдбрд╛рдЙрдирд▓реЛрдб рдкреНрд░рдЧрддрд┐ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐
XMLHttpRequest рдХреЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдСрдирдкреНрд░реЛрдЧреНрд░реЗрд╕ рдЗрд╡реЗрдВрдЯ рд╣реИ (
рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ )ред
рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ IE9 onprogress рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдпрд╣
рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛
рдирдИ рд╡рд┐рдВрдбреЛ .XMLHttpRequest () рдореЗрдВ
рдСрдирдкреНрд░реЛрдЧреНрд░реЗрд╕ рдЗрд╡реЗрдВрдЯ рд╣реИред рдпрджрд┐ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рд╣рдо рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдпрд╛ рддреЛ рд╢реИрд▓реА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рдмрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╢ рд╕реЗ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ), рдпрд╛ рд╣рдо рдЗрд╕реЗ рдорд┐рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдпрджрд┐ рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред
function loadFile(file, len, callback) { var progressBar = $('#progressBar'), loadingPanel = $('#loadingPanel'); file.url += '?' + REVISION;
JQuery рдореЗрдВ, рдореИрдВрдиреЗ
рдХреИрд╢ рдкрд╛рд╕ рдХрд┐рдпрд╛
: ajax рдореЗрдердб рдХреЗ рд▓рд┐рдП
рд╕рд╣реА рдкреНрд░реЙрдкрд░реНрдЯреА, рддрд╛рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд░ рдлрд╛рдЗрд▓реНрд╕ рдХреЛ рдХреИрд╢ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рди рдХрд░реЗ, рдирд╣реАрдВ рддреЛ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, jQuery рд╣рд░ рд╕рдордп .js рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛, рдЪрд╛рд╣реЗ рд╡реЗ рдХреИрд╢реЗ рдореЗрдВ рд╣реЛрдВ рдпрд╛ рди рд╣реЛрдВред ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдУрдкреЗрд░рд╛ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рд╕рдВрд╕реНрдХрд░рдг 12 рдореЗрдВ)
evt.loaded evt.total рд╕реЗ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реЛ
рд╕рдХрддрд╛ рд╣реИ ред
рдореБрдЭреЗ рдЕрдиреНрдп рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реБрдЖред
рдбреЗрдореЛрдирдореВрдирд╛ рд╕реНрд░реЛрддреЛрдВ