我正在尝试在一个页面上设置变量,然后将其显示在另一个页面上。两个页面都存在于同一个域中。我之前从未使用过sessionStorage所以我不确定我犯了哪些错误。出于某种原因,第二页只是一个空白页面。以下是设置变量的第一页上的代码。
if (typeof(Storage) != "undefined") {
// Store
sessionStorage.setItem("score", 12);
document.getElementById("result").innerHTML = ("score");
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
这是第二页上的代码,它应该检索变量并将其打印到屏幕上。
if (typeof(Storage) != "undefined") {
// Retrieve
document.getElementById("result").innerHTML = sessionStorage.getItem("score");
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
任何有关为什么没有获得变量的见解都将非常感谢。
答案 0 :(得分:4)
答案 1 :(得分:2)
正如Yiriy所指出的,当尝试在浏览器的多个窗口/标签之间共享变量时,应该使用localStorage而不是sessionStorage。
所以使用:
localStorage.setItem("score",12);
和
document.getElementById("result").innerHTML = localStorage.getItem("score");
在另一个标签
中只需考虑sessionStorage存储局部变量,而localStorage存储全局变量。
答案 2 :(得分:1)
答案 3 :(得分:1)
if (!sessionStorage.length) {
localStorage.setItem('getSessionStorage', Date.now());
};
window.addEventListener('storage', function(event) {
if (event.key == 'getSessionStorage') {
localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage));
localStorage.removeItem('sessionStorage');
} else if (event.key == 'sessionStorage' && !sessionStorage.length) {
var data = JSON.parse(event.newValue);
for (key in data) {
sessionStorage.setItem(key, data[key]);
}
}
});