2012-02-16 9 views
1

次のプリロードスクリプトを使用してすべての画像を読み込んだ後、2つのdiv表示設定を切り替えて、ユーザーがサイトを表示しないようにしています。問題は、もちろん、IE 8とスイッチダウンの拒否です。私はいくつかのプリローダーの問題やこのようなバグを見てきましたが、それらはすべてキャッシュを参照していますが、実際の修正を見つけることはまだありません...どんな助けでも大歓迎です。jquery preloader addonがIE 8以降で動作していません...

拡張子:それを呼び出すために

(function($) { 
var imgList = []; 
$.extend({ 
    preload: function(imgArr, option) { 
     var setting = $.extend({ 
      init: function(loaded, total) {}, 
      loaded: function(img, loaded, total) {}, 
      loaded_all: function(loaded, total) {} 
     }, option); 
     var total = imgArr.length; 
     var loaded = 0; 

     setting.init(0, total); 
     for(var i in imgArr) { 
      imgList.push($("<img />") 
       .attr("src", imgArr[i]) 
       .load(function() { 
        loaded++; 
        setting.loaded(this, loaded, total); 
        if(loaded == total) { 
         setting.loaded_all(loaded, total); 
        } 
       }) 
      ); 
     } 

    } 
}); 
})(jQuery); 

コード:ここでは、コードです

$(function() { 
<? if ($dir = opendir('images')) { 
     $images = array(); 
     while (false !== ($file = readdir($dir))) { 
      if ($file != "." && $file != "..") { 
       $images[] = $file; 
      } 
     } 
     closedir($dir); 
     foreach($images as $image) { 
      if(stristr($image, '.')) 
      $preload .= "'images/".$image."',"; 
     } 
     $preload = substr($preload, 0, -1); 
    }?> 

    $.preload([<?=$preload?>], 
    { 
     loaded_all: function(loaded, total) { 
      $('#main_loading').css('display', 'none'); 
      $('#container').css('display', 'block'); 
     } 
    }); 

}); 

私はもともとこのコードを見つけましたが、私を満たすために、それを少し変更したところ、私は忘れますニーズ。私たちのdevサイトはこれを見ることができます:http://www.branninggroup.com/backbeat/media_player/

私はそれを表示する前に10秒待機を強制的にIEで今部分的に動作するように一時的な修正を入れましたが、明らかにむしろ画像すべてのページを表示するために読み込まれて....任意のヒント/アドバイスは非常に高く評価されるだろう。

答えて

1

このプラグインは間違ったことをしていますが、その1つはIEの問題とloadイベントに関連しています。

あなたはloadイベントを定義する必要があり、かつその後srcプロパティ/属性を設定します。

(function($) { 
var imgList = []; 
$.extend({ 
    preload: function(imgArr, option) { 
     var setting = $.extend({ 
      init: function(loaded, total) {}, 
      loaded: function(img, loaded, total) {}, 
      loaded_all: function(loaded, total) {} 
     }, option); 
     var total = imgArr.length; 
     var loaded = 0; 

     setting.init(0, total); 
     for (var i = 0; i < total; i++) { 
      imgList.push($("<img />") 
       .load(function() { 
        loaded++; 
        setting.loaded(this, loaded, total); 
        if(loaded == total) { 
         setting.loaded_all(loaded, total); 
        } 
       }) 
       .attr("src", imgArr[i]); 

      ); 
     } 

    } 
}); 
})(jQuery); 

...とそれを交換してみてください、私はまた、通常のforループにfor (in)ループを変更。 prototypeチェーンを掘り下げたくありません。 $.each()を使用することもできます。

+0

これは美しく機能しましたが、削除する必要がありました。 .attr( "src"、imgArr [i])の後に。修正していただきありがとうございます! – Josh

関連する問題