通过JS为.less样式表设置href

问题描述 投票:0回答:3

我正在使用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,因为我已经检查过,但样式本身并没有实际改变。我已经检查了缓存,它与此无关。任何帮助都会受到极大的关注。

javascript html css less
3个回答
0
投票

除非您在页面的.less部分添加了<script src="less.js" type="text/javascript"></script>,否则将样式表包含为<head>格式将不起作用。

查看Less.js here的使用信息


0
投票

less.min.js将找到对LESS文件的引用,并在加载时从它们生成CSS。

在此之后,您正在创建对LESS文件的新引用,此时less.js注意到为时已晚。

在链接到LESS样式表之后但在加载checkCookies();脚本之前,需要调用less.js


0
投票

谢谢你的帮助,

通过您的信息,我发现了以下(botch)修复:

var elem = document.getElementById('NameOfOriginalLessGeneratedStyle'); //REQUIRES CHANGE ON SERVER CHANGE
elem.parentNode.removeChild(elem);
//Deleted previous styles
less.refresh();
//Loads new style

应该在样式表href更改后运行。

© www.soinside.com 2019 - 2024. All rights reserved.