2014-07-18 105 views
1

我遇到了fancybox加載緩存圖像的問題。我想確保圖像在它出現在頁面之前沒有被緩存,但是我通過其各種回調(beforeShow,afterShow,afterLoad,beforeLoad)試圖完成此操作並沒有取得成功。fancybox確保fancybox-image沒有被緩存

這是我目前有:

$(".fancybox").fancybox({ 
      helpers: { 
      overlay: { 
       locked: false 
      } 
      }, 
      beforeShow: function(){ 
      if($('.fancybox-image').length>0){ 
       console.log($('.fancybox-image').attr('src')); 
       clearCacheImages('fancybox'); 
      } 
      } 
     }); 

    function clearCacheImages(source){ 
     if(source == "all"){ 
     // console.log('loading all images'); 
     jQuery('img').each(function(){ 
      jQuery(this).attr('src',jQuery(this).attr('src')+ '?' + (new Date()).getTime()); 
     }); 
     }else if(source=="fancybox"){ 
     // console.log('loading fancybox image: ' + $('.fancybox-image').attr('src')); 
     $('.fancybox-image').attr('src',$('.fancybox-image').attr('src')+ '?' + (new Date()).getTime()); 
     } 

    } 

當我點擊的fancybox幻燈片中的下按鈕,它顯示了以前的形象,而不是第一個。任何人都知道如何以及何時確保fancybox圖像不被緩存?

回答

2

我會做什麼總是加載一個非緩存圖像中的fancybox是使用beforeLoad回調像一個版本?v=試運行參數動態添加到的fancybox href

$(".fancybox").fancybox({ 
    beforeLoad: function() { 
     this.href = this.href + "?v=" + new Date().getTime() 
    } 
}); 

這樣,的fancybox總會(重新)加載圖像,而不是使用緩存的圖像。

JSFIDDLE

+0

是的,這正是我需要的,謝謝!我錯過了這個.href元素。 – scientiffic