我正在使用cookie来查明用户是否处于光照或黑暗模式的身体上。如果无法找到cookie,我总是使用light.less作为后备/默认值。所以在我的<head>
我有
<link rel="stylesheet" type="text/css" href="../assets/main.css">
<link rel="stylesheet/less" type="text/css" id="colorMode" href="../assets/light.less">
<script src="../assets/less.js/dist/less.min.js" type="text/javascript"></script>
我的身体标签如下:
<body onload="checkNav(); checkCookies();" onresize="checkNav()">
checkCookies()
是审查cookie并相应行动的功能,如下所示。
function checkCookies() {
var style = getCookie("style");
if (style == 'dark') {
document.getElementById("colorMode").href = "../assets/dark.less";
document.getElementById("switchIcon").innerHTML = "toggle_on";
document.cookie = "style=dark; path=/~sam.walker";
}
else {
//Already set by default
}
}
getCookie()
函数只返回相关的样式cookie
带有href = colorMode
的../assets/light.less
样式表确实按照预期更改为../assets/dark.less
,因为我已经检查过,但样式本身并没有实际改变。我已经检查了缓存,它与此无关。任何帮助都会受到极大的关注。
除非您在页面的.less
部分添加了<script src="less.js" type="text/javascript"></script>
,否则将样式表包含为<head>
格式将不起作用。
查看Less.js here的使用信息
less.min.js
将找到对LESS文件的引用,并在加载时从它们生成CSS。
在此之后,您正在创建对LESS文件的新引用,此时less.js
注意到为时已晚。
在链接到LESS样式表之后但在加载checkCookies();
脚本之前,需要调用less.js
。
谢谢你的帮助,
通过您的信息,我发现了以下(botch)修复:
var elem = document.getElementById('NameOfOriginalLessGeneratedStyle'); //REQUIRES CHANGE ON SERVER CHANGE
elem.parentNode.removeChild(elem);
//Deleted previous styles
less.refresh();
//Loads new style
应该在样式表href更改后运行。