javascript - 存储首选主题的最佳方式?
问题描述
我为我的网站创建了一个“更改主题”功能。一切都很好,直到我访问该网站的几天后,它为我提供了默认主题。主题生效前需要重新加载。
我在 cookie 中为所选主题存储了一个变量,然后在每次加载站点时检查它以确定要加载的样式表。
示例:如果用户选择“深色主题”
document.cookie = "theme=dark; expires=Tue, 18 Dec 2018 12:00:00 UTC"
如果用户选择“轻主题”
document.cookie = "theme=light; expires=Tue, 18 Dec 2018 12:00:00 UTC"
我想知道这是否有缺点,以及是否有更好的方法来存储除 cookie 之外的首选主题变量?
我怀疑发生这种情况的原因是我拥有的 PHP 条件语句是在浏览器解释 cookie 之前呈现的。我可能对此有误,如果是,请告诉我。
这是一个问题:服务器端和客户端(PHP 和 JavaScript)都没有错误。
编辑:
问题在于,即使存储的 cookie 具有“深色主题”,它也提供默认的“浅色主题”。它需要刷新页面才能显示深色主题。没有错误。
这是我在标头中用于确定 cookie 变量的 PHP 验证
if(isset($_COOKIE['theme']) && $_COOKIE['theme'] == 'dark'){
echo '<link rel="stylesheet" type="text/css" href="dark-theme.css">';
}else{
echo '<link rel="stylesheet" type="text/css" href="light-theme.css">';
}
注意:我没有缓存任何东西,浏览器的网络控制台也没有缓存版本。
解决方案
推荐阅读
- sharepoint - SharePoint 身份验证自定义登录表单
- node.js - 如何在 Node Typescript 中的猫鼬控制器上传递类型
- bitbucket - 防止 bitbucket 管道在更新 bitbucket-pipelines.yml 时触发
- python - Tkinter - 将 3 个用户输入变量传递给函数以通过 pandas 查询搜索 csv 文件
- testing - 如何从junit中的模拟超级方法返回
- php - nginx - 仅在满足条件时如何显示目录
- javascript - 如何在窗口模式中显示 qr?
- api - 您可以使用 Coinbase API 请求 S2S OAuth 令牌以在没有用户交互的情况下发出经过身份验证的请求吗?
- linux - 在 Linux 上使用 PowerShell 时,有没有办法在 PS 脚本退出时设置 shell $PWD?
- apache-flink - 在 Flink DataStream 中查找最大值