用 localstorage 记录广告关闭状态:存唯一键名如 'ad_closed_ad_banner_home_top' 值为 'true',加载时严格比较 === 'true' 并添加 ad-hidden 类隐藏;关闭按钮点击时同步存储并即时隐藏,需 try/catch 兼容隐私模式。

用 localStorage 记录用户对某个广告位的关闭操作,核心是“存一次、读一次、判断一次”——关了就记下 ID 或标识,下次加载页面时先查,命中则直接隐藏对应广告容器。
存储关闭状态:用唯一键名保存布尔值
每个广告位应有稳定且可预测的标识(如 ad_banner_home_top、ad_sidebar_right),关闭时写入 true:
localStorage.setItem('ad_closed_ad_banner_home_top', 'true');
注意:localStorage 只存字符串,建议统一用字符串 'true' / 'false',避免 true 被转成 'true' 但取值时误判为真值(比如 localStorage.getItem(...) == true 在值为 'false' 时也返回 true)。
读取并应用状态:页面加载时检查并隐藏
在 DOM 加载后(如 DOMContentLoaded 或组件挂载时)执行:
- 读取对应键名,如
localStorage.getItem('ad_closed_ad_banner_home_top') - 若值严格等于
'true',则给广告容器添加style="display:none"或切换一个隐藏 class(如is-closed) - 推荐用 class 控制样式,便于统一维护 CSS:
const adEl = document.getElementById('ad-banner-home-top');
if (localStorage.getItem('ad_closed_ad_banner_home_top') === 'true') {
adEl.classList.add('ad-hidden');
}
触发关闭动作:绑定点击并同步存储
给广告上的“×”关闭按钮绑定事件:
- 阻止冒泡,避免误触广告跳转
- 调用
localStorage.setItem写入关闭状态 - 立即隐藏当前广告元素(不等刷新)
- 可选:上报一次关闭行为(用于统计)
document.querySelector('.ad-close-btn').addEventListener('click', function(e) {
e.stopPropagation();
localStorage.setItem('ad_closed_ad_banner_home_top', 'true');
this.closest('.ad-banner').classList.add('ad-hidden');
});
清理与兼容考虑
localStorage 是域级持久存储,不会自动过期。如有需要,可:
- 设置过期时间:存值时附带时间戳(如
{ closed: true, expires: Date.now() + 7 * 24 * 60 * 60 * 1000 }),读取时校验 - 支持多设备同步?不能——localStorage 不跨设备,需服务端配合
- 隐私模式下可能不可用:需包裹 try/catch,失败时降级为内存变量(本次会话有效)
不复杂但容易忽略:键名必须全局唯一、读写一致、字符串比较用 ===、隐藏逻辑要即时生效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










