我想在本地服务器上使用sessionStorage在不同选项卡之间传递一些数据。我尝试了一些方法,但没有成功。有人请帮帮我。
这是我设置数据的一个文件。
if (typeof(Storage) !== "undefined") {
var loggedInUserId = loggedInId;
console.log(loggedInUserId);
sessionStorage.clear();
sessionStorage.setItem("loggedin_id", loggedInUserId);
console.log(sessionStorage);
}
我正在尝试从本地驱动器的另一个项目的其他文件中获取数据
var companyId = sessionStorage.getItem("loggedin_id");
问题是,数据是在浏览器上设置的,但当我检查其他项目选项卡时,存储空白。
注意:我的两个项目都在两个驱动器中,不知道它有什么区别。请有人给我一些解决方法。谢谢。
答案 0 :(得分:2)
会话存储不适合您应该使用本地存储的任务 对于sessionStorage,更改仅适用于每个窗口(或Chrome和Firefox等浏览器中的选项卡)
在您的情况下,您希望在不同的标签中共享数据,以便您可以执行以下操作:
if (typeof(Storage) !== "undefined") {
localStorage.setItem("firstname", "fady");
} else {
// Sorry! No Web Storage support..
}
然后您可以像使用会话存储一样检索它
var firstname = localStorage.getItem("firstname");
答案 1 :(得分:0)
Fady Sadek的答案是正确的方法,我会在获取值之前添加一个检查localStorage是否可用,以及在尝试获取数据之前是否实际保存了数据。
function saveText() {
if (typeof(Storage) !== "undefined") {
localStorage.setItem("myData", "Hello, Rajesh!");
alert('Data saved.');
} else {
alert('Local storage not available');
}
}
function getText() {
if (typeof(Storage) !== "undefined" && typeof(localStorage.getItem('myData')) !== "undefined") {
alert(localStorage.getItem('myData'));
} else {
alert('Local storage not available or the data is not saved.');
}
}
请记住scopes of the storage,您只能在相同子域和/或域中的标签/窗口之间使用它。