【发布时间】:2010-04-06 18:20:42
【问题描述】:
我花了一整天的时间尝试制作一个脚本,该脚本在“提交”时隐藏表单并显示隐藏的动画进度条。问题是 Internet Explorer 不会在隐藏的 div 中显示动画 gif 图像。图像是静态的。我访问了许多网站并找到了一个脚本,它使用:
document.getElementById(id).style.backgroundImage = 'url(/images/load.gif)';
最后,我的脚本可以在 Internet Explorer、Firefox、Opera 中运行,但是……谷歌浏览器根本不显示图像。我只看到 div 文本。经过多次测试,我发现了以下内容:在 Google Chrome 中查看背景图片的唯一方法是在页面某处(隐藏 div 之外)包含 1px 尺寸的相同图片:
<img src="/images/load.gif" width="1" heigh="1" />
这成功了,但是......在这个肮脏的解决方案之后,Microsoft Explorer 出于某种原因再次将图像显示为静态。所以,我的问题是:有什么办法可以强制 Gogle Chrome 显示图像?谢谢。这是我的脚本:
<script language="JavaScript" type="text/javascript">
function ver (id, elementId){
if (document.getElementById('espera').style.visibility == "visible") {
return false;
}else{
var esplit = document.forms[0]['userfile'].value.split(".");
ext = esplit[esplit.length-1];
if (document.forms[0]['userfile'].value == '') {
alert('Please select a file');
return false;
}else{
if ((ext.toLowerCase() == 'jpg')) {
document.getElementById(id).style.position = 'absolute';
document.getElementById(id).style.display = 'inline';
document.getElementById(id).style.visibility = "visible";
document.getElementById(id).style.backgroundImage = 'url(/images/load.gif)';
document.getElementById(id).style.height = "100px";
document.getElementById(id).style.backgroundColor = '#f3f3f3';
document.getElementById(id).style.backgroundRepeat = "no-repeat";
document.getElementById(id).style.backgroundPosition = "50% 50%";
var element;
if (document.all)
element = document.all[elementId];
else if (document.getElementById)
element = document.getElementById(elementId);
if (element && element.style)
element.style.display = 'none';
return true;
}else{
alert('This is not a jpg file');
return false;
}
}
}
}
</script>
<div id="frmDiv">
<form enctype="multipart/form-data" action="/upload.php" method="post" name="upload3" onsubmit="return ver('espera','frmDiv');">
<input type="hidden" name="max_file_size" value="4194304" />
<table border="0" cellspacing="1" cellpadding="2" width="100%">
<tr bgcolor="#f5f5f5">
<td>File (jpg)</td>
<td>
<input type="file" name="userfile" class="upf" /></td></tr>
<tr bgcolor="#f5f5f5">
<td> </td>
<td>
<input class="upf2" type="submit" name="add" value="Upload" />
</td></tr></table></form>
</div>
<div id="espera" style="display:none;text-align:center;float:left;width:753px;"> <br /> <br /> <br /> <br />
<br />Please wait...<br />
</div>
【问题讨论】:
-
是时候终于可以让IE6休息了。 IE7+ 上也会出现这种情况吗?
-
保罗,它是 IE7。我已经阅读了这个长线程:west-wind.com/Weblog/posts/1227.aspx,看起来这个问题没有解决方案。
标签: javascript html google-chrome progress-bar