Pio*_*iak 5 javascript iframe download progress-bar
我想显示在 iframe 中下载某些文档的进度。我已经创建了这个JavaScript 进度条,现在我想将它用作下载进度指示器。我知道与 ajax 一起使用是可能的,但是以传统方式加载文件/文档呢。
我试图在 MSDN 中搜索解决方案,现在我想知道是否可以使用以下任何一种:
还是我应该去别的地方看看......?
嗯... 11 年后,我看到它没有得到答复,但你的进度条仍然存在!
我一直在寻找同样的东西,最终使用了 fetch,实现了此增强功能:https://github.com/AnthumChris/fetch-progress-indicators/blob/master/fetch-enhanced/supported-browser.js
这段代码根据内容长度标头检查 fetch 响应读取的数据量,并将其变成一个易于使用的钩子。如果愿意的话,人们也可以自己实现类似的东西。
然后你可以做类似的事情:
let progress = 0;
const fetcher = new ProgressReportFetcher({loaded, total} => {
progress = (loaded / total) * 100;
});
let iframeSrc;
fetcher.fetch(resourceUrl)
.then((response) => response.arrayBuffer())
.then((arrayBuffer) => new Blob([arrayBuffer], { type: 'application/pdf' })) // see note below
.then((blob) => window.URL.createObjectURL(blob))
.then((url) => {
iframeSrc = url;
});
Run Code Online (Sandbox Code Playgroud)
(或者,如果你想将它移植回 11 年前的 javascript,可以使用它的一些 jquery 变体......)
Nb,我在这里把它变成了PDF。制作 blob 时需要设置 mimetype,否则会看到乱码数据,不幸的是,原生的response.blob()方法不支持这样做。因此需要额外跳转 arrayBuffer。