1

我的图像位于另一台服务器上(不同的域,所以我不能使用 javascript 来检查),如果加载错误,我希望 fancybox 跳过图像并继续下一个。这可能吗?

4

1 回答 1

0

编辑:所以我最初的答案很糟糕,我正在摆脱它。忘记它曾经发生过。这个概念很不错,但我忘记了跨域策略,所以我结合了其他一些方法来完成这项工作。这不需要您编写自己的后端代码,但我建议您将 YUI 替换为您自己的类似代码。用jsfiddle测试。

这里的基础是您需要确保您可以通过确保服务器按您预期的方式响应来完成这项工作。因此,我使用您的 gravatar 和我的作为测试,并使用 YUI 框架来执行实际请求(通过 jquery 中的 json 请求)。

var images = ["https://en.gravatar.com/userimage/3532627/52159e585800d69265e0a1819c4dde54.jpg?size=80","http://www.gravatar.com/avatar/e08d91a83ce8dd7b88aaaae4aec58074?s=128&d=identicon&r=PG"],
    imagelen = images.length,
    newimages = [];
while(imagelen--) {
  var url = images[imagelen];
  $.getJSON("http://query.yahooapis.com/v1/public/yql?"+
            "q=select%20*%20from%20html%20where%20url%3D%22"+
            encodeURIComponent(url)+
            "%22&format=xml'&callback=?",
    function(data){
      console.log(data);
      if(data.results[0]){
        // sweet
        newimages.push(images[imagelen]);
        images.splice(imagelen,1); 
        if (images.length === 0) { // last one, fire callback
          doFancyBoxStuff();
        }
      } else {
        // d'oh!
        images.splice(imagelen,1); 
        if (images.length === 0) { // last one, fire callback
          doFancyBoxStuff();
        }
      }
    }
  );
}
function doFancyBoxStuff() {
  console.warn("fired callback");
}
于 2013-01-11T19:51:37.777 回答