【问题标题】:Loading a CSS 'theme' before the viewable page loads在可查看页面加载之前加载 CSS“主题”
【发布时间】: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 运行,因此用户将直观地看到页面从深色主题到浅色主题。

我需要利用什么事件/其他东西来确保此代码执行并更新&lt;link&gt;href 在用户看到任何屏幕之前

非常感谢任何可以为我指明正确方向的人!

【问题讨论】:

  • 您在完整代码中使用了哪些编程语言?如果您还使用例如 PHP 来生成 HTML 页面,您可以让 PHP 通过读取 cookie 来决定主题。剩下的,我看不出你是如何阻止你目前得到的。
  • 我正在使用 PHP,是的。我如何从 PHP 中读取由 jscookie 设置的 cookie?
  • w3schools.com/php/php_cookies.asp 那里说明了如何读取 cookie,cookie 是特定于浏览器的,而不是特定于语言的。您可以阅读它们。如果您的页面加载(并且它是一个 PHP 文件),您可以让 PHP 文件读取 cookie 包含的内容并在生成 HTML 时进行相应的设置。
  • 哦,我明白了!我没有意识到它是浏览器而不是特定于语言的!有用!如果您发表该评论,我将接受它作为答案,谢谢!

标签: javascript jquery css


【解决方案1】:

考虑到(正如我们在 cmets 中讨论的那样)您也使用 PHP。 您可以让 PHP 读取 cookie 并使用该变量。由于 PHP 是在您的浏览器加载网站之前处理的,因此它将设置正确的配置。 Cookie 是特定于浏览器的,而不是特定于编程语言的。以下是在 PHP 中的操作方法:http://www.w3schools.com/php/php_cookies.asp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多