一个称为 mega.com 的文件共享网站有一个功能,可以创建自定义的下载管理器。当你下载一个文件时,它会在网站上显示一个自定义的进度条(可能正在将文件加载到缓存中),然后创建一个缓存文件的下载提示框。如何使用JavaScript实现这个功能?
progress
事件提供处理程序来获取下载进度。var oReq = new XMLHttpRequest();
oReq.addEventListener("progress", updateProgress, false);
[...]
function updateProgress (oEvent) {
if (oEvent.lengthComputable) {
var percentComplete = oEvent.loaded / oEvent.total;
// ...
} else {
// Unable to compute progress information since the total size is unknown
}
}
如果服务器在头部信息中未发送 Content-Length
,则文件的总大小将不可用。
针对您的问题,这里有一个完整的答案:http://tonistiigi.github.io/mega/。
URL.createObjectURL(xhr.response)
来提供<a download>。 - dandavis