强制在jquery mobile中刷新图像

时间:2013-12-27 20:27:21

标签: jquery-mobile

Android,Phonegap,jqm 1.4

当用户在我的应用中上传新的个人资料照片时,它会在服务器上发生变化,但由于img src是相同的路径(相同路径,新数据),因此它不会在应用中更新(页面刷新,构建一个新的图像元素等。)我必须重新启动应用程序才能进行更改。

有没有办法只刷新图像元素,以便重新下载图像?

我认为它正在缓存图像...我想保持缓存一般,但只是在用户更改图片时“取消缓存”。

注意:我的chrome / ripple模拟器中不会发生此问题,它会在页面刷新时更新。

3 个答案:

答案 0 :(得分:3)

您需要更改图像路径以强制再次下载。为此,请将未使用的URL参数添加到路径末尾,如下所示:

$("#myimg").attr("src", "/path/to/myimg.jpg?"+ new Date().getTime());
// OR
$("#myimg").attr("src", "/path/to/myimg.jpg?"+ Math.random());

试试jQuery Mobile。

答案 1 :(得分:2)

以下小函数通过将哈希附加到源

来重新加载图像
(function($){
$.fn.ForceReload = function(UserSettings){

    // Settings
    var Settings = $.extend({
        Hash: new Date().getTime()
    }, UserSettings);

    // Image iteration
    this.each(function(){
        var _this = $(this);
        var img = _this.clone();
        var src = img.attr("src");
        img.attr("src", src + (src.indexOf("?") > -1 ? "&" : "?") + "hash=" + Settings.Hash).one("load", function(){    
            _this.after(img);
            _this.remove();
        });
    });
}
}(jQuery));

并使用如下:

$("img").ForceReload();

答案 2 :(得分:1)

重新加载您的信息页:

$(document).ready(function() {
    setInterval(function(){
         location.reload();
     }, 1000);
});

或者:

$(document).ready(function() {
    setInterval(function(){
         $("#myimg").attr("src", "img.jpg?"+ new Date().getTime());
     }, 1000);
});