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

如何让jQuery代码在页面刷新或页面跳转后保持生效?

解决暗黑模式状态跨页面/刷新后保持的问题

你的代码目前只实现了点击切换暗黑模式并设置cookie,但缺少页面初始化时读取cookie恢复状态的逻辑,所以刷新或跳转页面后会回到初始状态。下面是修正后的完整代码,同时修复了几个细节问题:

// DOM加载完成后执行初始化逻辑
$(document).ready(function() {
  // 读取darkmode cookie的值
  const darkModeEnabled = $.cookie('darkmode') === 'enabled';
  
  // 如果cookie标记为开启,直接应用暗黑模式类
  if (darkModeEnabled) {
    $('.header-wrap').addClass('dark-header');
    $('.site-header__logo').addClass('dark-logo');
    $('.page-container').addClass('dark-body');
    // 更新按钮文本为"Light Mode"
    $('#dmbutton').text('Light Mode');
  }

  // 暗黑模式按钮点击事件
  $('.darkmode-button').click(function() {
    // 切换各类
    $('.header-wrap').toggleClass('dark-header');
    $('.site-header__logo').toggleClass('dark-logo');
    $('.page-container').toggleClass('dark-body');
    
    // 切换后判断当前状态,更新cookie和按钮文本
    const isDarkNow = $('.header-wrap').hasClass('dark-header');
    $.cookie('darkmode', isDarkNow ? 'enabled' : 'disabled', { 
      path: '/', // 确保cookie在整个网站生效
      expires: 365 // 设置过期时间为1年,可选
    });
    
    // 更新按钮文本
    $('#dmbutton').text(isDarkNow ? 'Light Mode' : 'Dark Mode');
  });
});

关键修改说明:

  • 页面初始化逻辑:在DOM加载完成后,先读取darkmode cookie的值,根据值直接应用对应的暗黑模式类和按钮文本,确保页面加载时就恢复之前的设置。
  • 修正cookie设置逻辑:原代码每次点击都把cookie设为enabled,这会导致切换回浅色模式时cookie状态错误。现在根据切换后的实际状态,将cookie设为enabled或disabled。
  • 添加cookie作用域:设置path: '/'确保cookie在网站所有页面都能被读取,避免不同页面cookie隔离的问题。
  • 整合按钮文本更新:把原changeText函数的逻辑直接整合到点击事件和初始化逻辑中,减少冗余代码。

内容的提问来源于stack exchange,提问作者Bilal Naseer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:15:39