我正在使用 Jekyll 网站,这并不重要,因为这是一个静态页面,我只是将其编写为附加信息。
期望的行为:
我想通过 javascript 加载我的样式表,因此它可以依赖于本地存储的值,比方说dark
and light
.
我用下面的代码做了一个通过 JS 加载它的小测试(有效)。
GREEN
<head>
...
<link rel="stylesheet" href="/assets/css/{{'light'}}.css">
...
</head>
这将按预期加载名为“light”的 CSS 文件。
但现在我想依靠localStorage
,有一个变量theme
具有light
作为价值。我尝试了以下方法:
RED
<head>
...
<script>
var storedTheme = window.localStorage.getItem('theme'); //Tested and working in console
theme = storedTheme ? storedTheme : 'light'; //global variable (also readable in console)
</script>
<link rel="stylesheet" href="/assets/css/{{theme}}.css"> <!-- cant read global variable -->
...
</head>
使用全局变量不起作用,它给我一个 404 错误,因为样式表路径是/assets/css/.css
.
之后,我认为创建一个元素也许可以解决问题,我手动创建了一个元素来测试它:
RED
<head>
...
<p id="theme" style="display:none;">dark</p>
<link rel="stylesheet" href="/assets/css/{{document.getElementById('theme').innerHTML}}.css">
...
</head>
不,路径仍然显示为:/assets/css/.css