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

页面重载后localStorage getItem返回null,需实现ID存储跳转逻辑

问题原因

你当前的代码不管URL里有没有id参数,都会把获取到的ids(无参数时就是null)存入localStorage。刷新页面后,URL里的id已经被pushState移除,此时ids为null,直接覆盖了之前存储的有效值,所以刷新后localStorage就变成null了。

修正方案

按照你的需求,我们需要先判断URL中是否存在新id:有新id则更新存储并跳转;无新id则使用之前存储的id跳转。调整后的代码如下:

<p id="demo"></p>

<script>
// 获取URL参数与本地存储的ID
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const newId = urlParams.get('id');
const storedId = localStorage.getItem('name');

// 核心逻辑处理
if (newId) {
  // 存在新ID:更新本地存储,显示并修改URL隐藏参数
  localStorage.setItem('name', newId);
  document.getElementById('demo').innerHTML = newId;
  window.history.pushState('new', 'title', '?m=1');
} else if (storedId) {
  // 无新ID但有存储的ID:跳转至对应页面
  window.location.href = `https://www.theseconds.xyz?id=${storedId}`;
} else {
  // 既无新ID也无存储ID:默认处理(可根据需求修改)
  document.getElementById('demo').innerHTML = '无可用ID';
}
</script>
关键调整点
  • 仅当URL中存在有效newId时,才更新localStorage,避免用null覆盖原有值
  • 无新ID时,优先读取本地存储的storedId进行跳转
  • 将隐藏URL参数的逻辑限定在有新ID的分支中,避免无意义的历史状态修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:05:22