Kendo UI kullanan ve kullanıcının temaları değiştirmesine izin veren bir web uygulamasına sahibiz. Her bir farklı Kendo teması için özel bir CSS sayfası eklememiz gerekti.jQuery Her Zaman Stil Sayfasını Önbellekten Yükler
Özel stil sayfalarımızı yüklemek için jQuery appendTo ("kafa") kullanıyoruz. Sorun şu ki, bu sayfalarda değişiklik yaptığımızdan, jQuery onları gerçekten değiştiğinde bile önbellekten yüklemeye devam ediyor. Bu sorunu özellikle Google Chrome'da yaşıyoruz. Başka tarayıcıları test etmedim, ancak sorunun diğer tarayıcılarda da var olduğundan şüpheleniyorum. css url ucundaki bir zaman damgası ekleyerek
function changeTheme(skinName, animate) {
var doc = document,
kendoLinks = $("link[href*='kendo.']", doc.getElementsByTagName("head")[0]),
commonLink = kendoLinks.filter("[href*='kendo.common']"),
skinLink = kendoLinks.filter(":not([href*='kendo.common'])"),
href = location.href,
skinRegex = /kendo\.\w+(\.min)?\.css/i,
vmSkinRegex = /kendo\.\w+(\.min)?\.css/i,
extension = skinLink.attr("rel") === "stylesheet" ? ".css" : ".less",
url = commonLink.attr("href").replace(skinRegex, "kendo." + skinName + "$1" + extension),
vmUrl = commonLink.attr("href").replace(vmSkinRegex, "kendo." + skinName + "$1" + ".vm" + extension);
vmUrl = vmUrl.replace(".min", "");
function preloadStylesheet(file, callback) {
var element = $("<link rel='stylesheet' media='print' href='" + file + "' />").appendTo("head");
setTimeout(function() {
callback();
element.remove();
}, 100);
}
function replaceTheme() {
var oldSkinName = $(doc).data("kendoSkin"),
newLink, vmLink;
if (doc.createStyleSheet) {
// < IE 11
newLink = doc.createStyleSheet(url);
vmLink = doc.createStyleSheet(vmUrl);
} else if ($('html').hasClass('k-ie')) {
// IE 11
newLink = $("<link/>");
newLink.appendTo("head");
newLink.attr({ type: 'text/css', rel: 'stylesheet' })
.attr('href', url);
vmLink = $("<link/>");
vmLink.appendTo("head");
vmLink.attr({ type: 'text/css', rel: 'stylesheet' })
.attr('href', vmUrl);
} else {
// All the smart browsers.
newLink = skinLink.eq(0).clone().attr("href", url);
vmLink = skinLink.eq(0).clone().attr("href", vmUrl);
}
newLink.insertBefore(skinLink[0]);
vmLink.insertBefore(skinLink[0]);
skinLink.remove();
$(doc.documentElement).removeClass("k-" + oldSkinName).addClass("k-" + skinName);
}
if (animate) {
preloadStylesheet(url, replaceTheme);
} else {
replaceTheme();
}
};
Css url'nin sonuna bir zaman damgası eklemeye çalışın, ör.:. Url + "? _ =" + (Yeni Tarih()). GetTime() '.. belki de bu URL'yi önbelleğe almayı engelleyin. – DontVoteMeDown
Öneriniz, sorunumuzun cevabıydı. Bence cevap olarak göndermelisin. Google/SO’da henüz kesin bir cevap bulamadım. – HK1
Tamam, daha sonra bir cevap yazdım. – DontVoteMeDown