【发布时间】:2012-01-13 07:45:55
【问题描述】:
我正在收听xhr.onprogress
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: 4982035 因为totalSize 应该等于loaded 完成时
【问题讨论】:
-
我注意到
lengthComputable在您的情况下是false,据我了解,这意味着您不能依赖total。当lengthComputable为假时,我无法在网上找到total行为的参考——我认为它会是0。David Flanagan 的“JavaScript:权威指南”p508 是我能找到的唯一讨论——全部lengthComputable的其他搜索结果显示有人在使用它,但没有讨论该行为。 -
图书链接:books.google.com/…
标签: ajax file-upload xmlhttprequest ajax-upload