如何在不同页面保留JavaScript值?跨页共享函数获取值求助
解决跨页面保留并访问
currentProperty的方案 嘿,针对你现在的需求——让获取到的currentProperty能在多页面间访问,结合你用Firebase的代码场景,这里有几个实用的方案:
1. 使用浏览器本地存储(localStorage/sessionStorage)
这是最简单直接的前端跨页存储方式,适合非敏感数据:
- 存储修改:在你获取到
child.key后,把它存入本地存储:snapshot.forEach(function(child) { currentProperty = child.key; // 存入localStorage(持久化,关闭浏览器后仍保留) localStorage.setItem('currentProperty', currentProperty); // 或者用sessionStorage(仅当前会话有效,关闭标签页就清除) // sessionStorage.setItem('currentProperty', currentProperty); console.log(currentProperty); // ...你的其他代码 }); - 跨页读取:在其他页面需要用到这个值时,直接读取:
const savedProperty = localStorage.getItem('currentProperty'); if (savedProperty) { // 用这个值做后续操作 } - 注意:用户登出时记得清除这个值,避免残留:
firebase.auth().signOut().then(() => { localStorage.removeItem('currentProperty'); });
2. 利用Firebase数据库持久化存储
既然你已经在操作用户的Firebase节点,直接把currentProperty存在用户数据里是更可靠的方案(尤其是需要同步多设备的场景):
- 存储修改:获取到
child.key后,更新用户节点的currentProperty字段:snapshot.forEach(function(child) { currentProperty = child.key; // 写入用户的Firebase节点 const userRef = firebase.database().ref().child("users").child(user.uid); userRef.child('currentProperty').set(currentProperty); console.log(currentProperty); // ...你的其他代码 }); - 跨页读取:在其他页面,用户登录后直接从数据库读取:
firebase.auth().onAuthStateChanged(user => { if (user) { firebase.database().ref().child("users").child(user.uid).child('currentProperty') .once('value') .then(snapshot => { const savedProperty = snapshot.val(); if (savedProperty) { // 处理逻辑 } }); } }); - 注意:确保你的Firebase数据库规则设置正确,只允许用户读写自己的节点,比如:
{ "rules": { "users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }
3. URL参数传递(适合临时跳转场景)
如果你的goTo函数是用来跳转页面的,可以直接把currentProperty作为URL参数传递:
- 跳转时带参数:
snapshot.forEach(function(child) { currentProperty = child.key; // 跳转到目标页面并携带参数(记得编码特殊字符) window.location.href = `/your-target-page?property=${encodeURIComponent(currentProperty)}`; console.log(currentProperty); }); - 目标页面读取:
const urlParams = new URLSearchParams(window.location.search); const savedProperty = urlParams.get('property'); if (savedProperty) { // 处理逻辑 } - 注意:这个方法只适合一次性跳转,用户刷新页面或直接访问其他页面时参数会丢失,适合临时传递场景。
内容的提问来源于stack exchange,提问作者Dawesy
相关产品推荐
相关产品推荐

