刷新

2011-07-22 31 views
1

上的所有圖片,我試圖讓在頁面中的所有圖像重新加載包括backgound-image:規則刷新

我有一些半工作的代碼,但我想知道是否有這樣做的一個簡單的方法。

function cacheBuster(url) { 
    return url.replace(/\?cacheBuster=\d*/, "") + "?cacheBuster=" + new Date().getTime().toString(); 
} 

$("img").each(function() { 
    this.src = cacheBuster(this.src); 
}); 

$("*").each(function() { 
    var bg_img = $(this).css("background-image"); 
    if (bg_img !== "none") { 
     var url = /url\((.*)\)/i.exec(bg_img); 
     if (url) { 
      $(this).css("background-image", "url(" + cacheBuster(url[1]) + ")"); 
     } 
    } 
}); 
+0

對我很好。本來會建議使用'hasAttribute'選擇器來過濾'*',但是,它可能無法在CSS支持的元素上工作。 – Mrchief

+0

對我也很好。我不知道其他的選擇。我給圖片網址添加了一些噪音(如img.png?)。 – mana

+0

當瀏覽器從服務器加載新圖像時,用戶可能會看到圖像閃爍一次,或者圖像可能會消失一段時間,具體取決於連接速度。 – JJJ

回答

1

看起來很好,但是您缺少type = image的輸入,即充當提交按鈕的圖像。您可以通過添加以下代碼

$("img, input[type=image]").each(function() { 
    this.src = cacheBuster(this.src); 
}); 

你也可以改變的代碼,你遍歷所有元素,只包括那些可見的,如果它是你的情況可以接受包括他們。

$("*:visible") 

希望這會有所幫助。

+0

不會有任何問題,並且這確實有幫助,您可能也可以得到它。 –