javascript - JS - readAsDataURL 阻止浏览器事件

标签 javascript html file-upload

当我将一个文件加载到浏览器中时,我想向用户显示一个动画加载 gif。但是如果文件很大,浏览器看起来很忙,我的 gif 动画就无法工作。我可以做些什么来可视化加载?

HTML

<img id="loader" src="img/load.gif" />

JS

reader.readAsDataURL(file);
reader.onloadend = function(){
    document.getElementById('loader').style.display='none';
    var source = reader.result;
    document.getElementById('img').setAttribute( 'src', source);
}
document.getElementById('loader').style.display='block';

最佳答案

理论上,您所拥有的应该可以工作,因为读取操作是异步的。可能是 onloadend 回调阻止了执行。无论如何,你可以试试这个:

reader.onloadend = function(){
    document.getElementById('loader').style.display='none';
    var source = reader.result;
    document.getElementById('img').setAttribute( 'src', source);
}
document.getElementById('loader').style.display='block';
// Make sure to start loading only after the loader was displayed
// (give the browser a chance to repaint)
setTimeout(function() {
    reader.readAsDataURL(file);
}, 40);

关于javascript - JS - readAsDataURL 阻止浏览器事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500621/

相关文章:

Javascript:按键求和多个数组的最有效方法

HTML 可用性问题 -(双击)单击以选择文本

html - 间距问题表

HTML 输入文件连接被重置错误

php - 如何使用uploadify提交表单后获取上传的文件?

javascript - 使用 SQL 数据创建多维数组

javascript - 查找不在数组中的项目

javascript - 如何正确传递Parse.com Cloud Code参数?

javascript - 如何使用 javascript 更改 css 属性?

php - 将上传的文件转换为无法下载的特定文件格式