2014-01-22 56 views
0

我使用$ .getScript(url)加載外部js。現在,直到js被加載,我想要顯示百分比加載器(顯示加載了多少js)。我該如何做到這一點。如何知道外部js是否加載,並將百分比加載器,直到那個時候

$(document).on('click', 'div#play', function(){ 
     $(this).hide(); 
     $('div#stop').css('display', 'block'); 
     $('div#processing_load').show(); 
     var url = 'https://www.gstatic.com/swiffy/v5.4/runtime.js'; 
     $.getScript(url) 
      .done(function(){ 
       $('div#processing_load').hide(); 
       $('#swiffycontainer').css('display', 'block'); 
       $('.landing-banner').css('display', 'none'); 

       stage = new swiffy.Stage(document.getElementById('swiffycontainer'), swiffyobject); 
       stage.start(); 
       stage.setBackground(null); 
      }) 
    }) 

在這裏我想顯示加載之前完成percent.Thanks提前。歡迎任何幫助/建議。

回答

0

而不是getScript(),使用更強大的ajax()。它還允許你解析xhr數據來設置加載狀態,我編輯你的代碼(未經測試):

$.ajax({ 
    xhr: function() { 
     var xhr = new window.XMLHttpRequest(); 
     xhr.addEventListener("progress", function (evt) { 
     //check if the length of the requested file is computable (if you generate the requested file using php, you require ob_start(); and ob_end_flush();) 
      if (evt.lengthComputable) { 
       //Calculate the percentage completed 
       var percentComplete = Math.floor((evt.loaded/evt.total) * 100) + '%'; 
       //Do something with download progress 
       $('div#processing_load').show().html(percentComplete); 
      } 
     }, false); 
     return xhr; 
    }, 
    url: 'https://www.gstatic.com/swiffy/v5.4/runtime.js', 
    dataType: 'script', 
    complete: function(xhr) { 
     //you can use the xhr object to check for response codes 
     $('div#processing_load').hide(); 
     $('#swiffycontainer').css('display', 'block'); 
     $('.landing-banner').css('display', 'none'); 

     var stage = new swiffy.Stage(document.getElementById('swiffycontainer'), swiffyobject); 
     stage.start(); 
     stage.setBackground(null); 
    } 
}); 
0

我認爲你不能完全按照進度條顯示 爲什麼?因爲我們不知道裝載完成的時間。

但是,您可以使用一些提示來顯示進度條: 您需要知道文件大小並可以計算出網速。

time to load = your file size/your internet speed ; 
    => show progress bar when you begin to load . 

爲了計算可以在

  • 連接類型(2G,3G,無線網絡,有線)=>基礎速度得到在負載時其速度
  • 計算速度連接。你可以閱讀更多的http://stackoverflow.com/questions/4583395/calculate-speed-using-javascript
  • 使用導航計時API:window.performance *

最後,Noways正好與進度條(這取決於網絡)顯示。