【发布时间】:2012-05-02 19:24:16
【问题描述】:
尝试更新自定义 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) 已解决该问题。
有什么想法吗?
【问题讨论】:
-
顺便说一句,向 href 添加随机种子也无济于事。 /Content/themes/customizable_blue.less.css?4167=noworky
-
不需要 .less 扩展名吗?
-
VS/IIS7 不适合 .less 扩展。我已经添加了 MIME 类型,但 IIS 不会为它们提供服务。无论如何,.less.css 有快乐的一面,LESS 似乎对此非常满意。不是 LESS 没有编译——它是;那是我无法更改href并再次返回。
标签: jquery css stylesheet less asp.net-mvc-4