Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 存储首选主题的最佳方式?_Javascript_Php_Cookies - Fatal编程技术网

Javascript 存储首选主题的最佳方式?

Javascript 存储首选主题的最佳方式?,javascript,php,cookies,Javascript,Php,Cookies,我为我的网站创建了一个“改变主题”功能。一切都很好,直到几天后,当我访问该网站,它是服务于我的默认主题。在主题生效之前,需要重新加载它 我在cookies中为所选主题存储一个变量,然后在每次加载站点时检查它,以确定要加载的样式表 例如: 如果用户选择“黑暗主题” 如果用户选择“灯光主题” 我想知道这是否有缺点,除了cookies之外,是否还有更好的方法来存储首选主题变量 我怀疑发生这种情况的原因是我的PHP条件语句在浏览器解释cookie之前被呈现。我可能错了,如果是的话,请告诉我 关键是:服务

我为我的网站创建了一个“改变主题”功能。一切都很好,直到几天后,当我访问该网站,它是服务于我的默认主题。在主题生效之前,需要重新加载它

我在cookies中为所选主题存储一个变量,然后在每次加载站点时检查它,以确定要加载的样式表

例如: 如果用户选择“黑暗主题”

如果用户选择“灯光主题”

我想知道这是否有缺点,除了cookies之外,是否还有更好的方法来存储首选主题变量

我怀疑发生这种情况的原因是我的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">';
}
if(isset($\u COOKIE['theme'])&&&$\u COOKIE['theme']=='dark'){
回声';
}否则{
回声';
}

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

问题中是否缺少某些内容?“我怀疑发生这种情况的原因”你不说发生了什么,你用什么代码来决定使用哪个主题,即条件语句和实际输出主题的语句。这需要刷新页面才能显示暗主题。你的意思是,如果你重新打开浏览器,它会显示默认值,但在第二次刷新后,它工作正常并显示为黑色?是的@Viney这正是正在发生的事情编辑:PHP和JavaScript上没有错误。在我发布问题的那天,这种情况发生了三四次。截至今天7月1日,它还没有发生,但我担心它可能会发生在我的用户身上。
document.cookie = "theme=light; expires=Tue, 18 Dec 2018 12:00:00 UTC"
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">';
}