首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加速网站上的黑暗模式延迟?

如何加速网站上的黑暗模式延迟?
EN

Stack Overflow用户
提问于 2019-11-02 10:09:12
回答 2查看 355关注 0票数 4

我想加快黑暗模式在我的网站上生效。当我当前加载一个页面时,页面加载和暗模式生效之间存在延迟。下面是我的jQuery.js代码

代码语言:javascript
复制
onload = function () {
  if (localStorage.getItem("darkMode") === "true") {
    var mode = localStorage.getItem("darkMode");
    enableDarkMode();
  }
}

function enableDarkMode() {
  $("body").addClass("dark");
  $("nav").removeClass("navbar navbar-expand-md navbar-light");
  $("nav").addClass("navbar navbar-expand-md navbar-dark");
  $('.inner-switch').text("ON");
  var mode = localStorage.setItem("darkMode", "true");
}

function disableDarkMode() {
  $("body").removeClass("dark");
  $("nav").removeClass("navbar navbar-expand-md navbar-dark");
  $("nav").addClass("navbar navbar-expand-md navbar-light");
  $('.inner-switch').text("OFF");
  var mode = localStorage.setItem("darkMode", "false");
}

$('.inner-switch').on("click", function () {
  if ($("body").hasClass("dark")) {
    disableDarkMode();
  } else {
    enableDarkMode();
  }
});
EN

回答 2

Stack Overflow用户

发布于 2019-11-22 06:28:08

你可以使用像Smarty这样的模板引擎,甚至在显示网站之前检查是否有暗模式。然后,您可以分配一个smarty变量,并在网站的HTML中构建一个IF语句。

示例:

代码语言:javascript
复制
<body {if darkMode} dark {/if}>

因此,它将加载从一开始就激活的暗模式。

票数 1
EN

Stack Overflow用户

发布于 2019-11-02 18:32:30

你需要知道:

  • localStorage.getItem();
  • localStorage.setItem();

都是从设备的硬盘驱动器读取和写入的同步进程。

这使得它们相对于你用javascript运行的大多数东西来说相当慢--你可以观察到这种效果,因为,由于是同步的,这些进程需要在javascript线程中的任何其他东西运行之前完成。

要采取的步骤:

1)至少,我会在开始时用onDOMContentLoaded替换onload

2)此外,我还会考虑使用另一种(更快的)方法在页面之间持久化非webStorage的数据

2a) IndexedDB:存储页面间状态的最佳方法是indexedDB ,但是一个相当复杂的应用编程接口,一点也不容易理解。

2b) 曲奇:老派,但它们是有效的。然而,在这种情况下,可能是过度杀伤力。

2c) cookies查询字符串:一个客户端选项(比indexedDB更快、更容易,并且没有不必要的来回机制)可能是使用如下查询字符串:https://example.com/this-is/my-webpage/?mode=dark

在这种情况下,我可能会使用上面的第三个选项,URL Query String来代替webStorage

未来

几年来,web开发人员社区一直在叫嚣着寻找一种解决页面间数据持久化的方案,这种方案不仅具有IndexedDB的所有技术优势,而且实现起来像localStorage一样简单。

谷歌已经提出了一个解决方案(Keyword-Value Storage,简称KV Storage),目前正处于实验阶段,在2020或2021年前不会在浏览器中正确建立(作为一个内置模块):

进一步阅读:

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58667711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档