首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示ajax加载器图像,直到加载了实际图像

显示ajax加载器图像,直到加载了实际图像
EN

Stack Overflow用户
提问于 2010-01-04 05:16:16
回答 4查看 3.7K关注 0票数 2

所以我有一个带有小图片缩略图的页面,页面中间有一个很大的区域用于全尺寸照片。

当用户单击缩略图时,页面中间会显示一张全尺寸的图片。我只需更改中间图像的src属性即可实现此目的:

代码语言:javascript
复制
$('img#fullsize').attr('src', path); // path is built earlier in the jQuery code

问题是,当全尺寸镜像太大时,中间的全尺寸镜像会消失,直到新的全尺寸镜像开始加载之前什么都没有(在高峰时段,有时cca需要5秒才能开始加载新镜像)。我想要的是显示一个ajax加载器gif图像,直到全尺寸的照片开始加载。我该怎么做呢?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-04 05:30:06

不知道jQuery,但是<img>有一个onload事件。你能做的是

  1. 将显示图像的src设置为加载微调器gif,然后
  2. 将实际图像加载到隐藏的img中,
  3. 一旦onload事件触发,就交换周围的src

G213

代码:

代码语言:javascript
复制
<!-- preload spinner gif: -->
<img src="loading_spinner.gif" style="display:none" />

<!-- img placeholders: -->
<img src="" id="fullsize" />
<img src="" id="hidden_img" style="display:none" />

<a href="javascript:loadFullSize()">Click here to load image</a>

<!-- load image: -->
<script>
  function loadFullSize() {
    function get (id) {return document.getElementsById(id)}

    var visible = get('fullsize');
    visible.src = 'loading_spinner.gif';

    var hidden = get('hidden_img);
    hidden.src = path;

    hidden.onload = function(){
        visible.src = path;
    }
  }
</script>

您可以预加载微调器gif,以防您担心这一点。

票数 4
EN

Stack Overflow用户

发布于 2010-01-04 05:20:37

没有实际的代码,只有一个简短的想法:为你的图像定义一个css背景怎么样?应该可以工作,除了透明的图像(你必须稍后删除这些背景)-但实际上:我还没有尝试过。

票数 1
EN

Stack Overflow用户

发布于 2010-01-04 06:25:46

加载图像可能会很棘手。跨浏览器检查图像是否已加载的一种合理方法是检查本机image对象上的完整参数,并且宽度大于0。

像这样的东西应该是有效的:

代码语言:javascript
复制
var img = $('img#fullsize').attr('src', path)[0];

window.setTimeout(function() {
    if (img.complete && img.width) {
        console.log('loaded!');
    }
    window.setTimeout(arguments.callee, 1);
}, 1);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1996346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档