Пытается обновить пользовательский CSS href, который отлично работает в первый раз, но при последующих обновлениях на страницу не происходит никаких изменений. Я вижу обновление href в отладчике Chrome, поэтому событие запускается, и LESS не бросает никаких ошибок, но цвета не обновляются во второй раз.jQuery и LESS, обновление таблицы стилей работает только один раз
Вот некоторые из кода (каскадный для удобства чтения, обратите внимание, я использую VS 2010, MVC4, таким образом less.css расширение):
<link href="/Content/themes/customizable_default.less.css" id="CustomCSS" rel="stylesheet/less" type="text/css">
<a class="ToggleButton btn-primary" CssUrl="/Content/themes/customizable_default.less.css">Default CSS</a>
<a class="ToggleButton btn-primary" CssUrl="/Content/themes/customizable_green.less.css">Green CSS</a>
<a class="ToggleButton btn-primary" CssUrl="/Content/themes/customizable_gray.less.css">Gray CSS</a>
<a class="ToggleButton btn-primary" CssUrl="/Content/themes/customizable_blue.less.css">Blue CSS</a>
<div class="ThemeBox">
<div class="ThemeCompartment1">
<h2>This is the title.</h2>
</div>
<div class="ThemeCompartment2">
<p>A bunch of copy goes here.</p>
</div>
</div>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
// choosing a template
$('.ToggleButton').click(function (e) {
$('link#CustomCSS').attr({ href: $(this).attr('CssUrl') });
localStorage.clear();
less.refresh();
});
});
</script>
Обратите внимание, что ссылка таблицы стилей находится в заголовке, поэтому вся разметка семантически корректна (за исключением, конечно, атрибута CssUrl). Если я изменил ссылку href, а затем снова, новые значения не будут перерисовываться.
Пример:
Нажмите кнопку "Зеленый CSS" -> ссылка HREF = "/ Содержание/темы/customizable_green.less.css" -> ThemeBox становится зеленым.
Нажмите кнопку «Красный CSS» -> ссылка href = "/ Content/themes/customizable_red.less.css" -> ThemeBox становится красным.
Нажмите кнопку «Зеленый CSS» -> ссылка href = "/ Content/themes/customizable_green.less.css" -> ThemeBox остается красным.
Я подозреваю, что это что-то делать с .less кэширования, поэтому я добавил localStorage.clear() вызова, но ни то, ни less.refresh (истина) нет разрешили проблему.
Любые мысли?
Кстати, добавление случайного семени в href тоже не помогает. /Content/themes/customizable_blue.less.css?4167=noworky – kmunky
не требует дополнительного расширения? –
VS/IIS7 не играют хорошо с .less расширениями. Я добавил MIME-тип, но IIS не будет обслуживать их. Все равно, бесполезно.css подаются со стороны счастья, а МЕНЬШЕ, кажется, совершенно доволен этим. Это не то, что LESS не компилируется - это есть; это то, что я не могу изменить href и обратно. – kmunky