新闻详情

新闻详情

首页 / 资讯中心 / 详情

为什么smartbanner.js横幅关闭后不再出现?hide-ttl与hide-path的Cookie机制深度解析

发布时间:2026/9/6 8:47:27来源:尧图网络
为什么smartbanner.js横幅关闭后不再出现?hide-ttl与hide-path的Cookie机制深度解析
为什么smartbanner.js横幅关闭后不再出现hide-ttl与hide-path的Cookie机制深度解析【免费下载链接】smartbanner.jsCustomisable and lightweight smart app banner for iOS and Android项目地址: https://gitcode.com/gh_mirrors/smar/smartbanner.jssmartbanner.js 是一款面向 iOS 和 Android 的轻量级智能应用横幅Smart App Banner库只需几行 meta 标签即可在网页顶部渲染出引导用户下载 App 的横幅。很多新手都会遇到同一个困惑为什么点了一次关闭横幅就再也不出现了答案藏在hide-ttl与hide-path两个选项背后的 Cookie 机制里。本文带你从源码角度完整拆解它的记忆原理并给出一张即查即用的配置速查表。先搞懂横幅关闭时到底发生了什么当用户点击横幅上的×按钮时触发的是 src/smartbanner.js 中的handleExitClick它调用exit()方法完成三件事移除事件监听、恢复页面原有位置从 DOM 中删除横幅节点并派发smartbanner.exit事件关键一步——调用Bakery.bake(this.hideTtl, this.hidePath)写入一个 Cookie。而下次页面加载时publish() 会在渲染横幅前先检查如果Bakery.baked为true即 Cookie 中已标记用户已关闭直接返回横幅不再出现这正是关闭后不再出现的根本原因浏览器里留着一条smartbanner_exited1的 Cookie。两个选项的取值逻辑非常简单都定义在 src/smartbanner.js 的 getter 中hideTtl设置了就转成整数毫秒数没设置则为falsehidePath设置了就用你给的值没设置时默认是/整站生效。这两个值分别对应 Cookie 的expires有效期和path生效范围下面逐一拆解。hide-path用 Cookie 的 path 决定关闭管多宽写入 Cookie 的核心代码在 src/bakery.js默认情况下不配置hide-pathCookie 以path/写入对整站所有页面生效用户在任何一个页面关闭横幅其他页面也不会再出现如果你只想让关闭行为局限在某个目录下可以配置更窄的路径例如meta namesmartbanner:hide-path content/shop这样 Cookie 只会在/shop及其子路径下被读取用户访问/blog等其他路径时横幅会重新出现。 记忆口诀path 决定横幅被忘记的空间范围——/是全站/xxx是局部。官方文档中对这一行为的描述可参考 README.md 的 Path-designated close 小节。hide-ttl用 Cookie 的 expires 决定关闭管多久hide-ttl的单位是毫秒对应官方文档 README.md 中的 Time-limited close 小节。它的处理链路是src/smartbanner.js 的hideTtlgetter 把 meta 标签的值解析成整数src/bakery.js 的getCookieExpiresString用当前时间 hideTtl计算出过期时间生成expires...字符串如果没有设置hide-ttlbake()就不写 expires 属性——此时是一条会话 Cookie只持续到浏览器或标签页关闭为止。典型配置示例!-- 关闭后 10 秒内横幅不再出现10 秒后重新显示 -- meta namesmartbanner:hide-ttl content10000几个常用数值帮你建立量级感hide-ttl 值含义1000010 秒后重新出现864000001 天后重新出现31536000000约 1 年后重新出现单元测试 test/spec/bakery_spec.js 中还演示了如何用一个约 30 天的毫秒值生成过期时间可作为长期关闭的参考。Bakery一个包办Cookie 读写的小类Bakery 是整个机制的心脏只有 4 个静态方法却承担了全部 Cookie 工作bake(hideTtl, hidePath)写入smartbanner_exited1并附带可选的 expires 与 pathbaked用正则从document.cookie中读出该值等于1即返回true是横幅认账的唯一依据unbake()把过期时间设到 1970 年 1 月 1 日从而删除这条 Cookie对应 src/bakery.jsgetCookieExpiresString(hideTtl)生成 GMT 格式的过期时间字符串。这种烘焙 / 解冻 / 反烘焙的拟人化命名也暗示了设计意图横幅像面包一样被烤熟记住用户关闭过期后自然失效。四种组合速查表想达到什么效果就怎么配期望效果hide-ttlhide-path结果本次会话内不再出现最常用不配置不配置默认/整站关闭横幅关闭浏览器后恢复隔段时间重新出现拉新再触达如86400000不配置24 小时后横幅重新出现只在当前栏目关闭不配置如/shop访问其他路径时横幅照常出现长期关闭、接近永久31536000000不配置一年内整站不再出现⚠️ 常见踩坑hide-ttl填10并不是10 秒而是10 毫秒几乎等于立即重新出现单位务必用毫秒。调试技巧3 步定位横幅去哪了查看 Cookie打开浏览器开发者工具 → Application → Cookies找到smartbanner_exited检查它的Value、Path和Expires三栏即可直接对应本文讲的两个选项手动解冻在开发者工具中删除该 Cookie 后刷新页面横幅立刻回归监听事件项目派发了smartbanner.init、smartbanner.view、smartbanner.clickout、smartbanner.exit四类事件见 README.md 的 Events 小节可以在smartbanner.exit中打点确认 Cookie 是在用户点击关闭的瞬间写入的。如果你开启了 API 模式smartbanner:api设为yes还可以在代码里直接调用publish()手动展示横幅方便做 A/B 测试。总结一句话记住整个机制关闭横幅 写一条smartbanner_exited1的 Cookie之后每次publish()都会先验票hide-path管空间Cookie 的 path 决定关闭行为覆盖整站还是某个目录hide-ttl管时间毫秒级的 Cookie 过期时间不设置则只存活到会话结束核心实现全部集中在 src/bakery.js 与 src/smartbanner.js 中配合 test/spec/bakery_spec.js 的测试用例几分钟就能读透。理解了这套机制你既可以放心让横幅闭嘴也能按运营节奏让它准点回归。【免费下载链接】smartbanner.jsCustomisable and lightweight smart app banner for iOS and Android项目地址: https://gitcode.com/gh_mirrors/smar/smartbanner.js创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Qt翻金币游戏实战:QPainter动画与信号槽架构详解 2026/9/7 8:24:31

Qt翻金币游戏实战:QPainter动画与信号槽架构详解

简介:一份基于QT5框架开发的翻金币游戏完整项目源码,适合正在学习Qt界面编程、动画特效与窗口管理的开发者作为实战参考。游戏包含开始界面、菜单界面和关卡选择界面,涵盖自定义按钮交互、金币翻转动画、多页面切换等典型功能,代码…

阅读更多 →
MMD技术进阶:从虹膜收缩特效到完整3D动画工作流 2026/9/7 8:24:31

MMD技术进阶:从虹膜收缩特效到完整3D动画工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Spring Cloud微服务实战:网约车项目核心链路与高并发方案 2026/9/7 8:24:31

Spring Cloud微服务实战:网约车项目核心链路与高并发方案

简介:OnlineTaxi 是基于 Spring Cloud 的网约车全流程实战项目,面向具备一定 Java 基础、希望学习微服务架构的开发者或相关专业学生。项目按乘客端、司机端与能力层拆分为订单、派单、乘客用户、短信、计价、验证码、钱包、支付、地图等多个服务&#x…

阅读更多 →
MATLAB实现涡格法:从原理到代码实战 2026/9/7 8:24:31

MATLAB实现涡格法:从原理到代码实战

简介:涡格法(VLM)在亚声速气动力快速评估中具有广泛应用,基于MATLAB的涡格法程序包正是面向航空工程学习者、飞行器初步设计人员以及需要快速估算升阻力特性的研究者的实用工具。资源围绕几何建模、边界条件设置、涡强分配、欧拉方…

阅读更多 →
Axios 进度捕获实战:onUploadProgress 与 onDownloadProgress 在浏览器和 Node.js 中的实现原理 2026/9/7 8:24:31

Axios 进度捕获实战:onUploadProgress 与 onDownloadProgress 在浏览器和 Node.js 中的实现原理

Axios 进度捕获实战:onUploadProgress 与 onDownloadProgress 在浏览器和 Node.js 中的实现原理 【免费下载链接】axios Promise based HTTP client for the browser and node.js 项目地址: https://gitcode.com/GitHub_Trending/ax/axios 本文基于 axios 官…

阅读更多 →
FreeRTOS官方MDK demo实战:STM32F103上跑通内核与CLI命令行 2026/9/7 8:21:31

FreeRTOS官方MDK demo实战:STM32F103上跑通内核与CLI命令行

简介:面向嵌入式初学者的FreeRTOS演示工程,在Windows下使用MDK Keil uVision4打开即可直接编译烧写,目标芯片为STM32F103。工程将FreeRTOS内核依赖完整收录,代码层面重点演示通过串口中断接收数据来触发命令行,从而在真…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞