首页 > 解决方案 > 存储首选主题的最佳方式?

问题描述

我为我的网站创建了一个“更改主题”功能。一切都很好,直到我访问该网站的几天后,它为我提供了默认主题。主题生效前需要重新加载。

我在 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">';
}

注意:我没有缓存任何东西,浏览器的网络控制台也没有缓存版本。

标签: javascriptphpcookies

解决方案


推荐阅读