JS Image预加载被阻止?

时间:2009-06-04 17:26:32

标签: javascript image lightbox blocking preload

我正在使用JQuery Plugin called lightbox(这很棒)。问题是,我正在访问外部网站上的图片,我认为他们阻止灯箱预加载

具体来说,我已经确认picasa给预加载器一个404(使用firebug),但如果我右键单击firebug“net”选项卡中的失败请求,并且“在新选项卡中打开”图像加载正常。

任何来自picasa的图片都会发生这种情况,除非我已经查看过它们(在这种情况下我相信它们是从浏览器的缓存中提取而不是再次加载它们)

浏览器与预加载器(也来自firebug)发送的标头之间存在一些差异:

预加载器的“Accept”标题是:

image/png,image/*;q=0.8,*/*;q=0.5

vs直接在浏览器中加载图片:

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

我怀疑这是远程服务器区分浏览器请求和javascript的一种方式。你觉得怎么样?

此外,这是插件中的预加载器代码...以防万一

// Image preload process
var objImagePreloader = new Image();
objImagePreloader.onload = function() {
    $('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);
    // Perfomance an effect in the image container resizing it
    _resize_container_image_box(objImagePreloader.width,objImagePreloader.height);
    //  clear onLoad, IE behaves irratically with animated gifs otherwise
    objImagePreloader.onload=function(){};
};
objImagePreloader.src = settings.imageArray[settings.activeImage][0];

更新

显然,picasa阻止我显示完整尺寸的图像,无论是DOM的一部分还是通过javascript预加载......不知道如何处理此事

2 个答案:

答案 0 :(得分:1)

您总是可以在隐藏的DIV中将预加载IMG标记添加到DOM,而不是使用JavaScript加载它们。这样浏览器就会“自然地”加载它们。

答案 1 :(得分:0)

溶液

Picasa会让外部网站加载最大800像素的图片...如果您尝试使用大于外部域(而非picasaweb.google.com)的图像,您将获得404

幸运的是,800px很多......我只是想加载原件,你根本不允许这样做哈哈