为暗模式/亮模式 JS 保存 cookie - 问题

Posted

技术标签:

【中文标题】为暗模式/亮模式 JS 保存 cookie - 问题【英文标题】:Saving a cookie for darkmode/lightmode JS - Issues 【发布时间】:2022-01-10 14:53:22 【问题描述】:

我正在尝试在主体加载时加载 cookie,然后检查它的值。如果 darkmode = true,那么它应该显示 css/cssmain.css。如果为 false,则应显示 css/csslight.css。 cookie 有效:如果我使用按钮从暗切换到亮,它会将暗模式从真(暗)更改为亮(假),反之亦然。它甚至在我刷新页面时仍然存在,但 css 切换到其默认文件。

基本上,我无法弄清楚如何让 darkMode 进入我的 javascript 中的 if 语句。我尝试使用 onload="getCookie(darkMode)" 尝试将 cookie darkMode 的值(真或假)放入脚本中。似乎只是没有运行脚本,因为即使我添加了警报,我使用按钮时也不会弹出警报。

html

<head>
    <title>Freshwater Fish</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="css/cssmain.css">
    <link rel="stylesheet" type="text/css" href="css/desktopview.css">
    <link rel="stylesheet" type="text/css" href="css/mobile.css">
    <link rel="stylesheet" type="text/css" href="css/slides.css">
    <link id='css_theme' rel='stylesheet' type='text/css' href='css/csslight.css'>
    <script src="js/fullstackfrog.js"></script>
</head>
<body onload="getCookie(darkMode)">

<button  class="lightmodeButton" onclick="document.getElementById('css_theme').setAttribute('href', document.getElementById('theme').value, document.cookie = 'darkMode=true'); if (document.getElementById('theme').value == 'css/cssmain.css')  document.getElementById('theme').value = 'css/csslight.css'; document.cookie = 'darkMode=true'; else document.getElementById('theme').value = 'css/cssmain.css'; document.cookie = 'darkMode=false';">Light/Dark</button>
<input type="hidden" id="theme" value="css/cssmain.css">

</body>
</html>

JS (fullstackfrog.js):

function getCookie(name) 
  if (name) 
    document.getElementById('theme').value = 'css/cssmain.css';
  
  else 
    document.getElementById('theme').value = 'css/csslight.css';
  

【问题讨论】:

【参考方案1】:

你知道 cookie 是如何工作的吗? document.cookie 将保持不变。您需要编写一些东西来获取 cookie 并解析来自document.cookie 的值。尝试阅读https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie 并使用示例。

【讨论】:

cookie 不一样。每次单击按钮时它都会改变。 我的意思是当您刷新或更改站点时,字符串document.cookie 将保持不变(不会还原)。

以上是关于为暗模式/亮模式 JS 保存 cookie - 问题的主要内容,如果未能解决你的问题,请参考以下文章

PKD为暗模式和亮模式绘制不同的结果

如何根据暗/亮模式设置默认标签颜色(在 Swift 中)

(PHP)如何检测用户的计算机/浏览器是否处于黑暗模式?

TailwindCSS 为暗模式类抛出错误

Swift 3 - 通过开关更改所有视图控制器的背景颜色(暗模式/夜间模式)

Firefox 拒绝支持黑暗模式