2012-01-19 31 views
5

私は、訪問者がサイトに到着したときに背景イメージをフェードインさせようとしていますが、イメージがロードされていない場合は何かを実行する(jquery)

  1. 背景画像が既にキャッシュに入っているかどうかを確認してください。
  2. それが表示されている場合。
  3. それはそれを隠し、それをロードしたときに、jQueryのを使用して

でそれをフェードイン、私はそれを隠し、それがロードするときに、それをフェードすることができますされていない場合:。

$("#bkg img").hide(); 

$('#bkg img').load(function() { 
$(this).fadeIn(); 
}); 

しかし、どのようにこの条件を設定すると、の画像がすでにキャッシュされていない場合にのみ発生します。は既にキャッシュされていますか?

フォーラムで見つけたものはすべて、画像の読み込みが完了するとトリガーされます。ロードされていないので、どのようにトリガーすることができますか? that other threadからのコードに基づいて、任意の助け

おかげで、 Lernz

@Sima私は限り、次のようにそれを作った - しかし、それは何の効果を持っていないようです。

var storage = window.localStorage; 
if (!storage.cachedElements) { 
storage.cachedElements = ""; 
} 

function logCache(source) { 
if (storage.cachedElements.indexOf(source, 0) < 0) { 
    if (storage.cachedElements != "") 
    storage.cachedElements += ";"; 
     storage.cachedElements += source; 
    } 
} 

function cached(source) { 
    return (storage.cachedElements.indexOf(source, 0) >= 0); 
} 

var plImages; 

//On DOM Ready 
$(document).ready(function() { 
    plImages = $("#fundo-1 img"); 

    //log cached images 
    plImages.bind('load', function() { 
     logCache($(this).attr("src")); 
    }); 

    //display cached images 

    plImages.each(function() { 
    var source = $(this).attr("src") 
    if (!cached(source)) { 
     $(this).hide().fadeIn(); 
    } 
    }); 

}); 

答えて

2

あなたが試すことができます:あなたは私が間違っていることは素晴らしいことだつもり場所を確認できた場合は

if(!$('#bkg img')[0].complete) { 
    $('#bkg img').hide().load(function() { 
     $(this).fadeIn(); 
    }); 
} 

https://developer.mozilla.org/en/DOM/HTMLImageElement

+0

'.hide()'を最初に( 'if'内に)忘れないでください。 :) –

+1

ええ、ちょうど*編集されたそれは、長い日と週、金曜日にもたらす。 – karim79

+0

すごくいいよね:) – simekadam

0
$("#bkg img").hide();  
var imgCount=$("#bkg img").length; 
$('#bkg img').load(function(){ 
    if(!--imgCount){ 
     $('#bkg img').fadeIn(); 
      // your code after load 
    } else { 
     // your code onloading time 
    } 
}); 
0

を私はのように簡単ではありませんだと思いますそのように、hereは解決策になります。

+0

これは素晴らしいですが、私はそれの周りに私の頭を得るのに問題があります。 $( "#bkg img")がwindow.localStorage.cachedElements内に存在するかどうか質問したいと思いますか? 私にこれを行かせてください... – Learnz

+0

さて、私は本当にこれを得ていません。誰か他のアイデアはありますか? – Learnz

+1

いいえ..最初にwindow.localStorageをチェックする必要があります。ソースストリングが(リンクされたソリューションに応じて)存在するかどうかをチェックし、そこに格納されていない場合は、ロードイベントハンドラをfadeInコードでバインドする必要があります。正常に表示させてください。 イメージは実際には保存されていません。永続的な情報しかありません。イメージが以前にロードされたかどうかは問われません。 – simekadam

関連する問題