我为我的网站创建了“更改主题”功能。一切正常,直到我访问该网站几天后,它一直是我的默认主题。需要重新加载主题才能生效。
我将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以外的首选主题变量?
我怀疑发生这种情况的原因是在浏览器解释cookie之前呈现了我的PHP条件语句。我对此可能有误,如果是这样,请告诉我。
这里有个要点:服务器端和客户端(PHP和JavaScript)都没有错误。
编辑:
问题在于,即使存储的cookie具有“深色主题”,它仍将使用默认的“浅色主题”。它需要刷新页面才能显示深色主题。没有错误。
这是我在标头中使用的PHP验证,以确定cookie变量
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">';
}
注意:我没有缓存任何内容,并且浏览器的网络控制台也没有缓存的版本。