跳过404链接fancybox2

时间:2013-01-11 19:39:59

标签: fancybox-2

我的图像位于另一台服务器上(不同的域名,因此我无法使用javascript进行检查),我希望fancybox跳过图像,如果加载错误,则转到下一个图像。这可能吗?

1 个答案:

答案 0 :(得分: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");
}