我的网站上有一个html5文件上传脚本。
使用此进度条脚本
可以正常工作xhr.upload.addEventListener("progress", function(e) {
var pc = parseInt(100 - (e.loaded / e.total * 100));
var pci = parseInt(e.loaded / e.total * 100);
//get us our ETA
//kilobytes or megabytes?
var pcia = e.loaded / 1024;
var pcia2 = e.total / 1024;
if (pcia2 > 1024)
{
pcia = pcia / 1024
pcia2 = pcia2 / 1024;
progress.style.backgroundPosition = pc + "% 0";
elapsedtime = startTime + new Date();
alert(startTime);alert(new Date());
var eta = ((e.total / e.loaded) * elapsedtime) - elapsedtime;
progress.innerHTML = pci + "% (" + Math.ceil(pcia * 100)/100 + " MB of " + Math.ceil(pcia2 * 100)/100 + " MB)-(" + eta +" secs. remaining)";
}
else
{
progress.style.backgroundPosition = pc + "% 0";
progress.innerHTML = pci + "% (" + Math.ceil(pcia * 100)/100 + " KB of " + Math.ceil(pcia2 * 100)/100 + " KB)-(" + eta +" secs. remaining)";
}
}, false);
好的,所以我已经提醒了开始时间和调用进度的时间。 但变量ETA显示为NaN。 你怎么能达到类似日期的东西(“Y-m-d H:i:s”); (来自php)在javascript中?
答案 0 :(得分:3)
要查找ETA,您必须将代码更改为此。
这里所做的更改是我们有2个新变量,名为startTime和now。
上传开始后立即放置var startTime,它应该与var now语法相同。
此脚本将告诉用户上传的完整百分比,千字节/兆字节数与总共kb / mb,现在是文件上传的ETA。
xhr.upload.addEventListener("progress", function(e) {
var pc = parseInt(100 - (e.loaded / e.total * 100));
var pci = parseInt(e.loaded / e.total * 100);
//get us our ETA
//kilobytes or megabytes?
var pcia = e.loaded / 1024;
var pcia2 = e.total / 1024;
if (pcia2 > 1024)
{
pcia = pcia / 1024
pcia2 = pcia2 / 1024;
var now = (new Date()).getTime();
var elapsedtime = now - startTime;
elapsedtime = elapsedtime / 1000;
var eta = ((e.total / e.loaded) * elapsedtime) - elapsedtime;
eta = Math.round(eta);
progress.innerHTML = pci + "% (" + Math.ceil(pcia * 100)/100 + " MB of " + Math.ceil(pcia2 * 100)/100 + " MB)-(" + eta +" secs. remaining)";alert(pci); progress(pci, $('#progress'));
}
else
{
var now = (new Date()).getTime();
var elapsedtime = now - startTime;
elapsedtime = elapsedtime / 1000;
var eta = ((e.total / e.loaded) * elapsedtime) - elapsedtime;
progress.innerHTML = pci + "% (" + Math.ceil(pcia * 100)/100 + " KB of " + Math.ceil(pcia2 * 100)/100 + " KB)-(" + eta +" secs. remaining)"; progress(pci, $('#progress'));
}
}, false);