尝试更新自定义 CSS href,第一次可以正常工作,但在后续更新中,页面不会发生任何更改。我可以在 Chrome 调试器中看到 href 更新,所以事件正在触发,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="/Content/themes/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(true)都没有解决这个问题。
有什么想法吗?