【发布时间】:2016-09-18 13:58:09
【问题描述】:
我有一个我希望是一个相当简单的问题。首先,我会说我正在使用 jQuery 和 jscookie。
我有 2 个不同的 CSS 文件,一个浅色主题和一个深色主题。最初在<head> 我有这个<link> 标签:
<link id="theme" rel="stylesheet" href="css/dark.css" />
这会默认加载深色主题。
我有一种情况,用户可以使用按钮切换主题,该按钮还会更新一个 cookie,说明他们的主题偏好。由于深色主题是默认的,我们只需要检查用户是否有“浅色”主题作为他们的偏好。我有一些在头部运行的 javascript,就在链接下方:
if(theme_preference == 'light') { // theme_preference is the value of the cookie
jQuery('#theme').attr('href', 'css/light.css');
}
在加载任何页面内容之前,此代码有 50% 的时间可以工作并且主题已更改,但另外 50% 的时间在页面加载之前(我假设?)jQuery 运行,因此用户将直观地看到页面从深色主题到浅色主题。
我需要利用什么事件/其他东西来确保此代码执行并更新<link>href 在用户看到任何屏幕之前?
非常感谢任何可以为我指明正确方向的人!
【问题讨论】:
-
您在完整代码中使用了哪些编程语言?如果您还使用例如 PHP 来生成 HTML 页面,您可以让 PHP 通过读取 cookie 来决定主题。剩下的,我看不出你是如何阻止你目前得到的。
-
我正在使用 PHP,是的。我如何从 PHP 中读取由 jscookie 设置的 cookie?
-
w3schools.com/php/php_cookies.asp 那里说明了如何读取 cookie,cookie 是特定于浏览器的,而不是特定于语言的。您可以阅读它们。如果您的页面加载(并且它是一个 PHP 文件),您可以让 PHP 文件读取 cookie 包含的内容并在生成 HTML 时进行相应的设置。
-
哦,我明白了!我没有意识到它是浏览器而不是特定于语言的!有用!如果您发表该评论,我将接受它作为答案,谢谢!
标签: javascript jquery css