在JavaScript中有没有办法让一个变量保持“活着”并可在一个窗口中打开的所有页面中访问?
我创建了两个页面dog.php和cat.php。
dog.php是这样的:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
MyWord = "Bingo";
document.getElementById("demo").innerHTML = window.MyWord;
</script>
<p><a href="http://example.com/my_wnd_obj/cat.php">go to the cat page</a></p>
</body>
</html>
并且cat.php是这样的:
<!DOCTYPE html>
<html>
<body>
<p id="KittyTalks"></p>
<script>
document.getElementById("KittyTalks").innerHTML = window.MyWord;
</script>
</body>
</html>
然而,cat.php读取“undefined”而不是“Bingo”,这意味着cat.php页面没有看到在dog.php中创建的变量MyWord。
有没有办法让它看到那个变量?
答案 0 :(得分:7)
它不是一个变量,但您可以使用Session Storage。要实现您的示例,您可以执行以下操作:
sessionStorage.setItem('MyWord', 'Bingo');
在第一页上,然后
document.getElementById("KittyTalks").innerHTML = sessionStorage.getItem('MyWord');
在第二页。
如果你想获得一点点发烧友,你可以define a property。在这两个页面上,您将放置如下代码:
Object.defineProperty(window, "MyWord",
{
get:()=>sessionStorage.getItem("MyWord"),
set:(val)=>sessionStorage.setItem("MyWord", val)
}
);
然后你可以像常规变量一样使用它。
答案 1 :(得分:3)
您可以使用localstorage:https://developer.mozilla.org/en/docs/Web/API/Window/localStorage
dog.php上有类似的东西:
localStorage.setItem('MyWord', 'Bingo');
然后在cat.php上:
var myWord = localStorage.getItem('MyWord');
答案 2 :(得分:1)
使用本地存储!
http://www.w3schools.com/html/html5_webstorage.asp
但请记住,此变量对于同一主机上的所有Windows / future会话都是可见的!
// Store
localStorage.lastname = "Smith";
// Retrieve
document.getElementById("result").innerHTML = localStorage.lastname;