Я создал функцию «изменить тему» для своего сайта. Все хорошо, пока через несколько дней, когда я захожу на сайт, он служит мне темой по умолчанию. Перед тем, как тема вступит в силу, ее необходимо перезагрузить.
Я сохраняю переменную в файлах 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, которое я имею, отображается перед тем, как браузер интерпретирует куки. Я могу ошибаться, если это так, пожалуйста, дайте мне знать.
В этом и заключается подвох: нет ошибок на стороне сервера и на стороне клиента (PHP и JavaScript.)
EDIT:
Проблема в том, что он обслуживает стандартную «светлую тему», хотя сохраненные файлы 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">';
}
Примечание. Я ничего не кеширую, и в сетевой консоли браузера нет кэшированных версий.