2014-10-03 67 views
0

我正在創建一個chrome擴展,用於監控下載進度。我能夠捕獲下載開始並下載完整的事件,但不知道如何獲得改變的進度?請幫忙。 下面是我的下載聽衆我如何在Chrome擴展中捕獲下載進度

function AddDownloadListener() { 
    //-------------------------------------------------------------------------------------------------------------- 

    chrome.downloads.onCreated.addListener(DownloadCreated); 
    chrome.downloads.onChanged.addListener(DownloadChanged); 



    function DownloadCreated(el) { 
     console.log("Download Begins"); 
     console.log(el); 
     mobjPortToFoxtrot.postMessage({ message: "Download Begins", element: el }); 
    } 
    //-------------------------------------------------------------------------------------------------------------- 
     function DownloadChanged(el) { 
     if (el.danger === undefined || el.danger == null) { 
      console.log(el.state.current); 
      mobjPortToFoxtrot.postMessage({ message: el.state.current, element: el }); 
     } 
     else { 
      console.log("dangerous content"); 
      mobjPortToFoxtrot.postMessage({ message: "dangerous content", element: el }); 
     } 
     console.log(el); 
    } 
} 
+2

你必須輪詢下載狀態。 – 2014-10-03 13:32:18

+0

@RobW:任何類似的東西的參考?我如何進行民意調查呢? – 2014-10-03 13:34:56

回答

3

你不能這樣做以事件爲基礎的方式。

onChanged documentation(重點煤礦):

當任何一個DownloadItem的屬性除了bytesReceivedestimatedEndTime變化,這種事件觸發與downloadId和包含改變了屬性的對象的。

這意味着Chrome不會爲下載進程觸發事件,這種情況是有道理的:這種更改非常頻繁,您不希望在每個網絡數據包之後觸發事件。

這是給你的是這樣來查詢一個合理的速度進步(即每秒,而有一個活躍的下載):

// Query the proportion of the already downloaded part of the file 
// Passes a ratio between 0 and 1 (or -1 if unknown) to the callback 
function getProgress(downloadId, callback) { 
    chrome.downloads.search({id: downloadId}, function(item) { 
    if(item.totalBytes > 0) { 
     callback(item.bytesReceived/item.totalBytes); 
    } else { 
     callback(-1); 
    } 
    }); 
} 
+0

感謝答案,這是有道理的。考慮在setInterval中做它。在chrome擴展中使用setInterval()有多好? – 2014-10-03 13:40:27

+1

@Shiv這實際上是一個棘手的問題:它通常不適用於'persistent':false'背景頁面,但是應該有一個短的時間間隔(以便Chrome不考慮擴展空閒)。請確保仔細管理它,以便在有活動下載的情況下只進行輪詢並徹底測試該部分。 – Xan 2014-10-03 13:42:41

+0

感謝您的幫助,需要檢查它 – 2014-10-03 13:54:45

相關問題