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

如何通过window.localStorage实现新标签页保留输入框值?

用window.localStorage实现跨标签页保留输入值的方案

当然可以用window.localStorage搞定这个需求!我来给你调整现有代码,让新打开的标签页能完美保留输入框里的内容:

1. 实时把输入值存入localStorage

首先给输入框加个id方便获取元素,然后监听输入事件,把用户输入的内容实时存到localStorage里——同一个域名下的标签页可以共享localStorage的数据,这就是跨标签页同步的关键。

修改你的HTML:

<input 
  id="inputText"
  style="border: red solid 2px;" 
  placeholder=" enter text..."
>
<button id="btn" style="background:red" (click)="openNewTab()" routerLink="/{{ href }}"> Open-In-New-Tab > </button>

然后在组件的ngOnInit里添加监听逻辑,同时页面加载时先读取localStorage的值回显:

export class About{
 title: string = "About Page.";
 public href: String = '';
 constructor(private router: Router, private route:ActivatedRoute) { }
 openNewTab() {
 window.open('' + this.href + '?show=false', '_blank').focus();
 }
 ngOnInit() {
 this.href = decodeURI(this.router.url.replace(/\/.*\//g, ''));
 
 // 新增:处理输入框的存储与回显
 const inputEl = document.getElementById('inputText') as HTMLInputElement;
 // 页面加载时,从localStorage读取之前保存的值
 inputEl.value = localStorage.getItem('inputValue') || '';
 // 监听输入变化,实时存入localStorage
 inputEl.addEventListener('input', () => {
   localStorage.setItem('inputValue', inputEl.value);
 });
 
 // 原有路由参数处理逻辑
 this.route.queryParams.subscribe(params => {
 if (params.show === 'false') {
 document.getElementById('navigation').outerHTML = '';
 document.getElementById('btn').outerHTML = '';
 }
 });
 }
}

2. 新标签页加载时自动回显值

因为新标签页和原页面属于同一个域名,所以初始化时会自动执行上面的ngOnInit逻辑,读取localStorage里的inputValue并设置给输入框,这样打开新标签页时输入内容就不会消失了。

额外优化选项

如果你希望用户关闭浏览器后自动清除这个输入值,可以把localStorage换成sessionStorage,用法完全一样,只是sessionStorage的数据会在标签页关闭后自动清空。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:07:51