Валерий Ковальчук
21 сообщение
#15 лет назад
Здравствуйте. Подскажите как заставить браузер загрузить css файл повторно через ajax? Т.е . Браузер загружает css файл, но после некоторых манипуляций он меняется, и нужно обновить его, а браузер естественно все закешировал, и повторно без F5 не хочет грузить. Имя файла менять не выход.
Роман Беляев
16382 сообщения
#15 лет назад
В чем состоит исходная задача? Такое вот ее решения мне кажется не совсем корректным.
Валерий Ковальчук
21 сообщение
#15 лет назад
Есть набор div , и есть консоль для работы с ними. например менять фон, размеры, шрифты, содержимое блоков, это все через ajax сделано. Вот получается что после каждой функции генерируем новые css свойства для div , чтоб запомнить их. Хотелось бы после этот файл css загрузить по новой, чтоб не менять параметры в ручном режиме через js.
Тут М.
626 сообщений
#15 лет назад
Самое правильное - менять именно через JS. AJAX и генерация CSS тут - это лишние сущности.
Роман Беляев
16382 сообщения
#15 лет назад
Все равно не понятно. Есть набор divов, на клиентской стороне мы получаем их новые свойства, отсылаем их на сервер и чтобы не применять эти свойства тут же на клиентской стороне тянем новый css с сервера (который там генерится) и этот css меняет свойства? Если так, то совсем не нарядное решение. Во первых свойства у нас есть как только мы получили их для отправки, так вместо того чтобы их применить мы их отсылаем на сервер (это время), там они обрабатываются, генерируется новый файл (это время) а потом шлем назад (это время и трафик). ИМХО менять тут же на месте и не выдумывать костыли.
Валерий Ковальчук
21 сообщение
#15 лет назад
Frig - наверное так и сделаю. Спасибо.
Евгений О.
2989 сообщений
#15 лет назад
А нафига тут вообще нужен ajax? То что Вы загрузите файл css, не значит что он будет применен. Для этого необходимо, чтобы браузер выполнил повторную обработку страницы. Если уж и надо подгружать css, то надо делать примерно так
//list of files already added
var externalFilesAdded = '';

function loadExternalJsCssFile(fileName, fileType) {
if (externalFilesAdded.indexOf('') == -1) {
if (fileType == 'js') {
//if fileName is a external JavaScript file
var fileRef = document.createElement('script');
fileRef.setAttribute('type','text/javascript');
fileRef.setAttribute('src', fileName);
} else if (fileType == 'css') {
//if fileName is an external CSS file
var fileRef = document.createElement('link');
fileRef.setAttribute('rel', 'stylesheet');
fileRef.setAttribute('type', 'text/css');
fileRef.setAttribute('href', fileName);
}
if (typeof fileRef != 'undefined') {
document.getElementsByTagName('head').appendChild(fileRef);
externalFilesAdded += '';
}
}
}