You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript localStorage出现非预期darky相关额外键值问题咨询

问题背景

开发简易书单应用时采用localStorage实现数据持久化,通过ES6 class定义Book类,实例化的书籍对象存入数组后,经JSON.stringify()序列化写入localStorage,核心实现代码如下:

let array = [
    // 存储Book对象
];

// Book类
class Book {
    constructor(title, author, link, pages) {
        this.title = title;
        this.author = author;
        this.link = link;
        this.pages = pages;
        this.isRead = false; 
    }
}

// 用户新增书籍条目时保存数组数据
function addBook(book, array) {
    array.push(book);
    window.localStorage.setItem("library", JSON.stringify(array));
}

查看localStorage存储内容时,除自定义键library对应的书籍数组外,还出现三个非预期键值对:

darkyMode: "1"
darkyState: "f"
darkySupported: "t"

项目仅使用Bootstrap与原生JavaScript开发,需要确认该现象是否为JavaScript正常表现,同时需要移除额外存储项、避免这类非预期存储项再次出现。

结论

该现象不是JavaScript的正常表现,和编写的业务代码、官方原生Bootstrap框架无关联。

原因说明

三个带darky前缀的存储项为第三方脚本自动写入的配置:

  • 最常见来源是浏览器安装的全局暗色模式、网页美化类扩展,这类扩展会向所有访问的网页注入运行脚本,自动将暗色模式开关状态、运行状态、兼容性标记写入当前域名的localStorage
  • 少数情况是引入Bootstrap资源时误加载了第三方暗色主题适配插件,这类插件会自动生成上述三个键存储自身运行配置
  • 原生JSON.stringify序列化逻辑、localStorage.setItem原生API都不会自动生成额外的非指定键值对,现有Book类定义、addBook存储逻辑不存在问题,不会生成这类冗余字段。
处理方案
  • 清理现有冗余存储项:可直接在浏览器开发者工具的本地存储面板手动删除三个darky开头的键,也可在应用初始化逻辑中加入自动清理代码:
// 应用启动时执行,清理已知非预期存储项
['darkyMode', 'darkyState', 'darkySupported'].forEach(key => {
  window.localStorage.removeItem(key)
})
  • 避免后续重复出现:
    • 禁用浏览器中安装的全局暗色、网页美化类扩展,这类扩展会跨站点注入脚本写入存储
    • 核对项目引入的CDN或本地静态资源,确认Bootstrap引入源为官方渠道,没有附带额外的第三方主题脚本

内容的提问来源于stack exchange,提问作者John Roice M. Aldeza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:12:27