
利用 localstorage 记录跳转状态,结合时间判断,可实现在指定日期与时段内仅自动跳转一次到目标页面,避免重复重定向,适用于数字标牌、自助终端等需精准控制展示逻辑的场景。
利用 localstorage 记录跳转状态,结合时间判断,可实现在指定日期与时段内仅自动跳转一次到目标页面,避免重复重定向,适用于数字标牌、自助终端等需精准控制展示逻辑的场景。
在门店自助前台、信息亭或数字标牌等固定设备中,常需实现“每日指定时间仅跳转一次”的行为——例如每晚 9 点整自动从首页跳转至“已打烊”页面,但次日清晨仍能正常访问首页,且人工刷新或手动返回时不应再次触发跳转。单纯依赖 location.href 的条件判断会导致每次加载都重新评估并跳转,无法满足“仅一次”的核心需求。
解决的关键在于持久化记录跳转动作是否已发生。浏览器提供的 localStorage 是理想选择:它在同源下长期有效(除非手动清除),且不随页面刷新而丢失。我们只需在跳转前写入一个标记(如 'has-redirected': 'true'),后续每次加载时先检查该标记是否存在,仅当未标记时才执行时间判断与跳转逻辑。
以下是优化后的完整实现(适配您原需求:每周三 7:00–20:00 跳转至 washselection_wednesday.html,且仅首次满足条件时生效):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
<script type="text/javascript">
const redirectKey = 'has-redirected-wednesday';
const hasRedirected = localStorage.getItem(redirectKey) === 'true';
if (!hasRedirected) {
const now = new Date();
const day = now.getDay(); // Sunday=0, Monday=1, ..., Wednesday=3
const hour = now.getHours();
if (day === 3 && hour >= 19 && hour < 21) { // 19:00–20:59(即晚7点至晚9点前)
// ✅ 满足条件:周三且处于19–20点区间(注意:原题目标是“9pm”,应为21:00,此处按常见业务逻辑修正为20:00后跳转更合理;若确需21:00整点触发,请见下方说明)
localStorage.setItem(redirectKey, 'true');
location.href = 'washselection_wednesday.html';
}
}
</script>
⚠️ 重要说明与建议:
- 时间精度校准:原问题中“9pm”对应 hour === 21,但 getHours() 返回的是整点值(如 21:00–21:59 均为 21)。若希望严格在 21:00:00 瞬间跳转,需补充分钟/秒判断(如 hour === 21 && now.getMinutes() === 0 && now.getSeconds() 时间窗口检测(如 21:00–21:05)+ localStorage 锁定 更可靠。
- 跨天重置策略:当前逻辑不会自动“重置”标记。若需每日重试(如每天 21:00 尝试跳转一次),应改用日期字符串作为 key(如 'redirected-2024-06-12'),或配合 Date.now() 存储时间戳并在每日零点清理旧标记。
- 用户体验保障:建议在目标页(如 washselection_wednesday.html)添加显眼返回按钮,并附带 onclick="localStorage.removeItem('has-redirected-wednesday'); window.location.href='index.html';",便于管理员手动恢复首页。
- 兼容性:localStorage 在所有现代浏览器及 IE8+ 中均支持,无额外依赖。
通过将状态管理与时间逻辑解耦,该方案既保持了轻量性,又确保了行为的确定性与可维护性——真正实现“自动化、一次性、可逆控”的跳转体验。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










