Лучший способ сохранить предпочитаемую тему? - PullRequest
0 голосов
/ 30 июня 2018

Я создал функцию «изменить тему» ​​для своего сайта. Все хорошо, пока через несколько дней, когда я захожу на сайт, он служит мне темой по умолчанию. Перед тем, как тема вступит в силу, ее необходимо перезагрузить.

Я сохраняю переменную в файлах 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">';
}

Примечание. Я ничего не кеширую, и в сетевой консоли браузера нет кэшированных версий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...