2011-12-05 30 views
3

我聽上xhr.onprogressXMLHttpRequestProgressEvent.total總計TOTALSIZE給人錯誤的值

request.onprogress = function(e){ 
    return conf.progress ? conf.progress(e) : null; 
}; 

其中conf.progress

function(e){ 
    var position = e.position || e.loaded; 
    var total = e.totalSize || e.total; 
    var percent = ((e.loaded/e.total)*100)+""; 
    console.log(percent); 
    console.log(position, total); 
    console.log(e); 
} 

percent產生控制檯錯誤的值像2.789069431137492e-11這就是console.log(e)打印

XMLHttpRequestProgressEvent 
    bubbles: false 
    cancelBubble: false 
    cancelable: true 
    clipboardData: undefined 
    currentTarget: undefined 
    defaultPrevented: false 
    eventPhase: 2 
    lengthComputable: false 
    loaded: 4982035 
    position: 4982035 
    returnValue: true 
    srcElement: undefined 
    target: undefined 
    timeStamp: 1323097256269 
    total: 18446744073709552000 
    totalSize: 18446744073709552000 
    type: "progress" 
    __proto__: XMLHttpRequestProgressEvent 

爲什麼e.totalSize: 18446744073709552000是如此之大,甚至後的文件是完全加載e.loaded: 4982035totalSize應等於loaded當其完成

+2

我注意到'lengthComputable'在您的情況下是'false',據我瞭解,這意味着您不能依靠'total '。 當'lengthComputable'爲false時,我無法在線找到'total'的行爲 - 我認爲它是0. David Flanagan的「JavaScript:權威指南」p508是唯一的討論I可以找到 - lengthComputable的所有其他搜索結果顯示使用它的人,但不討論行爲。 –

+0

圖書鏈接:http://books.google.com/books?id=6TAODdEIxrgC&pg=PA508&lpg=PA508&dq=xhr2+lengthcomputable&source=bl&ots=ob9lDTNvXJ&sig=ir83LPAKveZzXDJOJe7-WBE0k1s&hl=en&sa=X&ei=mN36TuGDL8vMrQfPs8nqDw&ved=0CE8Q6AEwBw#v=onepage&q=xhr2% 20lengthcomputable&F =假 –

回答