javascript - fancybox 确保 fancybox-image 不被缓存

标签 javascript jquery image caching fancybox-2

我遇到了 fancybox 加载缓存图像的问题。我想确保图像在出现在页面上之前不会被缓存,但我没有成功地尝试通过其各种回调(beforeShow、afterShow、afterLoad、beforeLoad)来完成此操作。

这是我目前拥有的:

 $(".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 图像不被缓存吗?

最佳答案

要始终在 fancybox 中加载非缓存图像,我要做的就是使用 将版本 ?v= 试验参数动态添加到 fancybox href 中>beforeLoad 回调如下:

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

这样,fancybox 将始终(重新)加载图像,而不是使用缓存的图像。

参见JSFIDDLE

关于javascript - fancybox 确保 fancybox-image 不被缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24828917/

相关文章:

php - 如何使用 href 提交表单?

javascript - Angular 2,带 setter 的 @Input 的行为是否与不带 setter 的 @Input 不同?

Javascript 嵌套函数调用

javascript - 如何将submit()事件延迟到Geocoder完成之后?

javascript - 触发器不适用于通过 ajax 加载的内容

java - 如何从 Eclipse 项目中的 res 文件夹中获取文件?

asp.net - 通用处理程序没有在 ASP.NET 中被调用

c# - Azure 数据库和照片

javascript - Firebase 计数器,批量更新案例

JQuery选择优化