我在ASP.NET页面上有一个数据中继器。它加载了很多东西,并且需要4-5秒来显示图像。我不能分页或获取项目的一部分,我需要显示所有的数据,所以我需要一个加载消息或gif,但我怎么做呢?有谁可以帮我?
谢谢
发布于 2010-05-19 18:11:26
如果你的场景不是ajax one (经典的表单回发或者浏览器是通过点击链接来重定向的),我会在重定向/回发之前在html布局中插入动画gif (显示隐藏的div或者类似的东西)。AFAIK这种方法在老式浏览器上会有问题(动画将被冻结)
另一种方法称为page-processor?。浏览器被重定向到显示动画的中间页面,同时加载所请求的页面。
您还可以从服务器(Response.Write / Response.Flush)发送javascript代码,使当前页面具有动画效果。
我还建议阻止/隐藏UI控件,如“发送表单”,以拒绝不耐烦的用户点击两次,如果服务器响应太长。
发布于 2010-05-19 22:51:21
使用iframe。实际上,您可以在iframe中打开运行缓慢的页面,并使用iframe引发的事件来显示加载图像。
<script type="text/javascript">
var t;
//on iframe state change display or hide the loader tag
function readyStateChanged(state)
{
if (state == 'complete' || state == 4 || state == '4' || state == 'Complete')
{
//hide the loader
document.getElementById('loader').style.display = 'none';
clearTimeout(t);
} else
{
//diaplay the loader
document.getElementById('loader').style.display = '';
//hide the loader if the iframe never loads
t = setTimeout("hideLoader()", 5000);
}
}
//hide the loading tag
function hideLoader()
{
document.getElementById('loader').style.display = 'none';
clearTimeout(t);
}
</script>
<div id="loader" style="display: none;"><img />loading...</div>
<iframe id="frameX" src="your_page.aspx" width="100%" height="400px" onload="hideLoader();" onreadystatechange="readyStateChanged(this.readyState);" ></iframe>
https://stackoverflow.com/questions/2864431
复制相似问题