预加载图像时出现iPad / iPhone错误

时间:2011-06-23 14:51:15

标签: javascript image-preloader

我在预加载图像时遇到了一些问题,并在加载图像时设置了一些东西。我使用onLoad(或jQuery $(“img”)。load() - thingy)事件来检测图像何时加载。这在大多数浏览器中都能正常工作,当我在iPad / iPhone上试用它时就会出现问题。不知何故,它只是抛出onError事件(没有描述错误是什么!)。但是,当我在我的onError事件中,重定向到图像时,它显示就好了。很奇怪,似乎无法弄清楚究竟是什么导致它。

一些代码:

if( !limg ) {
    var load = function($img) {
        setTimeout(function() {
            var src = $img.attr("src");
            video.trigger(filmLoad, [s]);
            if (((src.indexOf(url) >= 0 && urlIsString) || !urlIsString) 
                && src.indexOf("_low.") >= 0)
            {
                $img.attr(
                    "src", 
                    urlIsString 
                        ? url.replace("_low.", "_high.") 
                        : set.film.url.high);
                still = stillIsString 
                    ? still.replace("_low.", "_high.") : set.film.still.high;
            }
        }, 0);
    };

    limg = s.loaderimg = $("<img>")
        .appendTo(video)
        .css({opacity: 0, position: "absolute", left: "-200em"})
        .load(function(e) { load($(this)); })
        .error(function(e) { if(e.target.complete) { load($(this)); } })
        .src("src/to/my/image.jpg");
}

2 个答案:

答案 0 :(得分:1)

如果您使用的是.manifest文件,则需要将图片的网址放入其中。

答案 1 :(得分:1)

你好回答我自己的问题:

我发现iPad对下载的图像数量有限制,而且由于我的图像非常大(尺寸明智),因此根本不下载它们。这些图像实际上是小型胶片,高度超过14000像素,宽度约为600像素。因此,当加载它们然后跳过下载时,iPad会抛出错误。 我试图让图像更方正,因此图像不是那么高,但仍然会出错。解决方案是将图像分割成更小的块,因为我发现iPad允许尺寸大约为600x6000像素的图像。因此,我将胶片分成尺寸约为600x4500像素的较小图像,效果非常好。

总而言之:如果iPad拒绝下载图像,那么它可能是大字体,无论是字节还是尺寸方面。