在两个浏览器选项卡之间共享变量范围

Shared variable scope between two browser tabs?

本文关键字:选项 之间 共享变量 范围 浏览器 两个      更新时间:2023-09-26

我有一个带有HTML表单的web应用程序,其中包含一个选择/选项条目。它在一个有200件商品的演示中运行良好,即使很难找到你想要的,但实际上有超过30000件商品。(这是一份零件清单。)

我的第一个想法是,不要使用下拉框,而是使用"选择零件"按钮,这样会打开第二个浏览器选项卡("搜索零件"),然后显示完整列表、搜索功能等,每个选项卡都有一个"复制到剪贴板"按钮。然后,用户可以按下一个,返回到原始表单,然后按下"粘贴"按钮,零件的名称将输入到表单中。

我想问的是,是否有一个javascript范围,我可以在"搜索部件"选项卡中存储一个小的文本字段和id号,以便在用户按下主表单页面上的"粘贴"按钮时检索它?我不想将消息发送回服务器。

(顺便说一句,我不一定对实现Ctrl+C/V或使用系统剪贴板感兴趣,除非这是简单解决方案的一部分。)

谢谢!

您可以使用HTML5存储API-window.localStorage

var val = localStorage.getItem("key"); //get
localStorage.setItem("key", val);  //set

比饼干干净多了。点击此处了解更多信息。

只要第一个页面打开"搜索部件"选项卡,您就应该有权(从"搜索零件"页面内部)访问window.opener对象。如果您在父页面中设置了一个全局对象,该对象包含所需的属性/变量,则您应该可以从子页面中进行完全访问。因为第一个页面是打开的,所以您仍然可以访问子页面中的调用方法,但我个人坚持让其中一个执行更新。