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 に答える