Iframe.readyState在chrome中不起作用

我动态创建一个Iframe,并将一个下载二进制文件(xls,doc…)的页面设置为url。当文件下载时,我会显示一个动画。如果没有,我就把它藏起来

问题是Chrome不知道文件何时完全下载,也就是iframe何时完全加载。我使用iframe属性readyState检查iframe状态:

var-iframe=document.createElement(“iframe”);
iframe.style.visibility=“隐藏”;
//我开始制作进度动画
设置超时(showProgressAnimation,1000);
//我开始下载文件
iframe.src=https://stackoverflow.com/questions/13952942/GetFile.aspx?file=“+文件名;
document.body.appendChild(iframe);
函数showProgressAnimation(){
if(iframe.readyState==“完成”| | iframe.readyState==“交互”){
//我停止动画并显示页面
animation.style.display='none';
progressBar.hide();
$('第页').show();
}
否则{
//Chrome总是进入这一领域
设置超时(showProgressAnimation,1000);
}
}

结果是一个无限循环

我尝试了以下方法,在Firefox和Chrome中都可以使用,但当内容是二进制文件时,则不能使用:

if($.browser.mozilla | |$.browser.webkit){
iframe.onload=函数showProgressAnimation(){
animation.style.display='none';
progressBar.hide();
$('第页').show();
}
}
//即
否则{
设置超时(showProgressAnimation,1000);
}

您可以使用onloadiframe

下面是一个简单的例子,说明

var-iframe=document.createElement(“iframe”);
iframe.style.display=“无”;
//加载iframe时将调用此函数
iframe.onload=函数(){
iframe.style.display=“块”;
警报(“已加载”);
};
//最后设置src。
iframe.src=http://www.test.com';
//将其添加到页面中。
document.getElementById(“一”).appendChild(iframe);

此处测试:
http://jsfiddle.net/48MQW/5/
最后加载的src
http://jsfiddle.net/48MQW/24/

发表评论