рдПрдХ рднрд╛рд░реА рд╕рд╛рдЗрдЯ рдХреЗ рдЙрджреНрдШрд╛рдЯрди "рддреЗрдЬреА"

рджреВрд╕рд░реЗ рджрд┐рди рд╕рд╛рдЗрдЯ рдХреЗ рдЙрджреНрдШрд╛рдЯрди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдХреЗрд╡рд▓ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдореЗрдВ рдЗрдХрдЯреНрдареА рд╣реБрдИ рдФрд░ рдСрдмрдлреНрдпреВрдЬрди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХреА рдЧрдИ, рдЬрд┐рд╕рдХрд╛ рд╡рдЬрди 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) { //     window.console && console.error('Already loaded.'); return; } loaded = true; var len = fileList.length, count = len; var _afterAll = function() { if (--count == 0) { if (typeof callback == 'function') { setTimeout(callback, 10); } } }; for(var i = 0; i < len; i++) { loadFile(fileList[i], len, _afterAll); } }; 


рд▓реВрдк рдореЗрдВ, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реА рдкреНрд░рдЧрддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред
рд▓реЗрдХрд┐рди рдбрд╛рдЙрдирд▓реЛрдб рдкреНрд░рдЧрддрд┐ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ XMLHttpRequest рдХреЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдСрдирдкреНрд░реЛрдЧреНрд░реЗрд╕ рдЗрд╡реЗрдВрдЯ рд╣реИ ( рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ )ред
рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ IE9 onprogress рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдирдИ рд╡рд┐рдВрдбреЛ .XMLHttpRequest () рдореЗрдВ рдСрдирдкреНрд░реЛрдЧреНрд░реЗрд╕ рдЗрд╡реЗрдВрдЯ рд╣реИред рдпрджрд┐ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рд╣рдо рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдпрд╛ рддреЛ рд╢реИрд▓реА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рдмрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╢ рд╕реЗ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ), рдпрд╛ рд╣рдо рдЗрд╕реЗ рдорд┐рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдпрджрд┐ рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред

 function loadFile(file, len, callback) { var progressBar = $('#progressBar'), loadingPanel = $('#loadingPanel'); file.url += '?' + REVISION; //     ,        $.ajax({ xhr: function () { var xhr = new window.XMLHttpRequest(); if ('onprogress' in xhr) { progressBar.parent().show(); loadingPanel.hide(); var last = 0, max = 100 / len; xhr.addEventListener("progress", function (evt) { if (evt.lengthComputable) { var percentComplete = Math.min((evt.loaded / evt.total) * max, max); if (last < percentComplete) { progressWidth += percentComplete - last; last = percentComplete; progressBar.width(progressWidth + '%'); } } }, false); } return xhr; }, type: 'GET', url: file.url, success: function (data) { if (file.type == 'style') { $('head').append('<link rel="stylesheet" type="text/css" href="' + file.url + '" media="screen" />'); } else if (file.type == 'script') { evalJS(data); } callback(); }, cache : true }); } function evalJS(text) { try { if (window.execScript) { window.execScript(text); } else { eval.call(window, text); } } catch (error) { window.console && console.error(error); } } 


JQuery рдореЗрдВ, рдореИрдВрдиреЗ рдХреИрд╢ рдкрд╛рд╕ рдХрд┐рдпрд╛ : ajax рдореЗрдердб рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкреНрд░реЙрдкрд░реНрдЯреА, рддрд╛рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд░ рдлрд╛рдЗрд▓реНрд╕ рдХреЛ рдХреИрд╢ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рди рдХрд░реЗ, рдирд╣реАрдВ рддреЛ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, jQuery рд╣рд░ рд╕рдордп .js рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛, рдЪрд╛рд╣реЗ рд╡реЗ рдХреИрд╢реЗ рдореЗрдВ рд╣реЛрдВ рдпрд╛ рди рд╣реЛрдВред ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдУрдкреЗрд░рд╛ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рд╕рдВрд╕реНрдХрд░рдг 12 рдореЗрдВ) evt.loaded evt.total рд╕реЗ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ред
рдореБрдЭреЗ рдЕрдиреНрдп рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реБрдЖред

рдбреЗрдореЛ
рдирдореВрдирд╛ рд╕реНрд░реЛрддреЛрдВ

Source: https://habr.com/ru/post/In193484/


All Articles