2012-06-29 125 views
2

我正在尋找一個大型的映射/小部件JavaScript文件(1.3 MB),並希望在加載時顯示進度條。我知道螢火蟲的網表標籤知道很多這種信息,但我想要更輕量級的東西。我碰到這個網站: http://blog.greweb.fr/2012/04/work-in-progress/Javascript源文件下載進度?

這幾乎讓我那裏除了我需要源文件我下載。我沒有看到任何jQuery的getScript監聽器作爲文件下載。有誰知道如何獲得源文件下載的進度?

在此先感謝!

回答

8

如果您使用getScript(),則可以使用成功回調執行函數,但只有在腳本加載完成後才能執行。

我會建議有一個加載指示符圖像(你可以在http://ajaxload.info/找到很多)並在腳本加載時隱藏它。

This SO有幾個其他的想法。一種解決方案如下:

var myTrigger; 
var progressElem = $('#progressCounter'); 
$.ajax ({ 
    type   : 'GET', 
    dataType  : 'xml', 
    url    : 'somexmlscript.php' , 
    beforeSend  : function (thisXHR) 
    { 
     myTrigger = setInterval (function() 
     { 
      if (thisXHR.readyState > 2) 
      { 
       var totalBytes = thisXHR.getResponseHeader('Content-length'); 
       var dlBytes  = thisXHR.responseText.length; 
       (totalBytes > 0)? progressElem.html (Math.round ((dlBytes/ totalBytes) * 100) + "%") : progressElem.html (Math.round (dlBytes /1024) + "K"); 
      } 
     }, 200); 
    }, 
    complete  : function() 
    { 
     clearInterval (myTrigger); 
    }, 
    success   : function (response) 
    { 
     // Process XML 
    } 
}); 

這設置了一個時間間隔來計算加載字節數和總字節數。這可能適合你。

+0

謝謝@sachleen,這就是我目前正在做的事情,我希望有更像螢火蟲的東西。 – Jonathan

+0

我認爲這對我很有用,非常感謝!我喜歡myTrigger的工作方式。 – Jonathan