Инструмент для динамического обновления CSS

Мне надоело эта ситуация и, не изобретая велосипед, на широких просторах интернета я нашел для себе решение.
Делюсь им:
dev.js сохраняем, например в папку js шаблона
var DevTools={
Init:function(){
this.headObj = document.getElementsByTagName('html')[0].getElementsByTagName('head')[0];
return this;
},
ReloadAllCSS : function(headObj) {
var links = headObj.getElementsByTagName('link');
for (var i=0 ; i < links.length ; i++){
var link = links[i];
this.ReloadCSSLink(link);
}
return this;
},
ReloadCSSLink : function(item) {
var value = item.getAttribute('href');
var cutI = value.lastIndexOf('?');
if (cutI != -1)
value = value.substring(0, cutI);
item.setAttribute('href', value + '?t=' + new Date().valueOf());
return this;
},
ReloadAllCSSThisPage : function() {
this.ReloadAllCSS(this.headObj);
return this;
}
};
Добавить можно указав его в списке js в вашшаблон/settings/config/config.php
$config['head']['default']['js'] = Config::Get('head.default.js');
$config['head']['default']['js'][] = '___path.static.skin___/js/template.js';
$config['head']['default']['js'][] = '___path.static.skin___/js/dev.js';
Использование
Вставляем в нужном месте
<a href="#" onclick="DevTools.Init().ReloadAllCSSThisPage()">CSS</a>
Как вариант можно вставить в тулбар шаблона
<section class="devtools" >
<a href="#" onclick="DevTools.Init().ReloadAllCSSThisPage()" class="dev-css" style="margin: 0px -2px; text-decoration: none;">CSS</a>
</section>
И все.
P.S. Работает при отключенном кэшировании
/* Устанавливаем настройки кеширования*/
$config['sys']['cache']['use'] = false;
/* Параметры компрессии css-файлов */
$config['compress']['css']['merge'] = false;
12 комментариев
И теперь вызываем reloadCSS как угодно.
Плюсы: затрагиваются только CSS, исправлена обработка "&" в href (как в гугловских стилях)
Поэтому лучше:
После setAttribute документ изменился и следующей итерации не будет из-за invalidIteratorState. Читать здесь.
Поэтому лучше изменять значения на «снимке».
подключаешь его в config.php (в списке JS)
В видное место темы пишешь ссылку:
Отключаешь кеширование и склейку CSS.
Всё. Теперь алгоритм работы прост. Изменила-сохранила-нажала на ссылку-посмотрела результат.
/config/config.php открывай и делай false следующее
Хотя для начинающих осваивать — нужен плагин.