【问题标题】:jQuery show a loading image while gif loadsjQuery显示加载图像,而GIF负载
【发布时间】:2014-04-10 10:15:09
【问题描述】:

我的网站上有一个非常简单的功能,它在页面加载时显示静态图像,如果您想查看 gif,则点击该图像,它会加载并在加载后开始显示。

如下

jQuery(".imgGif").each(function(index) {
jQuery(this).css( "cursor", "pointer" ); 
jQuery(this).click(function (index) {
    src = jQuery(this).attr('src');
    var extension = src.substr( (src.lastIndexOf('.') +1) );
     switch(extension) {
        case 'gif':
            jQuery(this).attr('src', src.substr(0, src.length-3) + 'jpg');
            break;
        case 'jpg': 
            jQuery(this).attr('src', src.substr(0, src.length-3) + 'gif');

            break;
        default:
            alert(extension);
            break;
        }
})
});

它有效,你可以在这里看到它, http://www.lazygamer.net/xbox-360/has-watchdogs-been-downgraded-since-e3-2012/

但是 gif 文件大小为 15mb,因此它们需要一段时间才能加载并开始播放,我如何在等待时将图像更改为加载图像,以便人们知道正在发生的事情?

【问题讨论】:

  • 我不确定我明白了,但你是说你想使用 15Mb 的加载 gif?!如果是这样,那就太疯狂了。
  • 不,我正在加载一个 15Mb 的 gif,我想在正常加载的静态文件和 gif 之间使用加载图像。所以页面加载了一张漂亮的图片,我点击它并加载图片取而代之,然后 gif 加载完成后开始播放

标签: javascript jquery image gif


【解决方案1】:

替换此代码:

jQuery(this).attr('src', src.substr(0, src.length-3) + 'jpg');

与:

var $el = jQuery(this);

//save the original source in a variable
var src = $el.attr('src');

//replace the current source with a loading gif (i.e. http://preloaders.net/)
jQuery(this).attr('src', '/path/to/loading.gif');

//start loading the original image
var img = new Image();

//once the original image is loaded then replace the loading gif
img.onload = function () {
    $el.attr('src', src);
}
img.src = src;

【讨论】:

  • 您不是说我应该更改 .gif 文件来执行此操作吗?所以它加载加载gif?我也应该不更改 $el.attr 来加载我的大 gif 吗?
  • 你的答案并不完全正确,但它让我朝着正确的方向前进......我需要将 img.src 设置为我想要加载的新文件......然后在onload 函数我将 $el 的源设置为 img 的源并且它正在工作。
  • 没错,这就是我的建议。
  • 是的,但这不是代码所做的……代码将其设置回原始 src……但就像我说的那样,它确实可以正常工作,我只需要更改一两件事……现在看起来棒极了:)
  • 哦,好吧,我以为你需要原始图像,神经元,很高兴它现在可以工作了。
猜你喜欢
  • 2015-06-26
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多