试图更新自定义CSS href,该功能第一次正常工作,但在后续更新中不会发生页面更改。我可以在Chrome调试器中看到href更新,因此事件正在触发,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变绿。
点击“Red CSS”按钮 - > link href =“/ Content/themes/customizable_red.less.css” - > ThemeBox变为红色。
点击“绿色CSS”按钮 - > link href =“/ Content/themes/customizable_green.less.css” - > ThemeBox保持红色。
我怀疑这是与.LESS缓存,这就是为什么我添加了localStorage.clear()电话,但既没有,也不less.refresh(真)有解决了这个问题。
有什么想法?
顺便说一句,在href中添加一个随机种子也无济于事。 /Content/themes/customizable_blue.less.css?4167=noworky – kmunky
不需要一个.less扩展吗? –
VS/IIS7对于.less扩展名不太好。我已经添加了MIME类型,但IIS不会提供它们。无论如何,无论如何,.less.css都带着幸福的一面,而LESS似乎完全满足于它。 这不是说LESS不是编译 - 它是;这是我无法改变的href,然后再回来。 – kmunky