Javascript 如何在刷新期间维护页面状态?
我想制作一个当用户刷新时可以保持其状态的网页 此站点上的多个答案建议将状态存储在浏览器的本地存储中。这个很好用。某种程度上。但是,当用户在多个选项卡中打开同一页并刷新其中一个选项卡时,状态将从不同的选项卡恢复。不太好 另一种方法是将状态放入表单输入中。在Firefox中,表单输入的状态是通过刷新保持的,尽管有些人考虑过。不幸的是,并非所有人都使用Firefox 所以我尝试使用Javascript 如何在刷新期间维护页面状态?,javascript,html,google-chrome,Javascript,Html,Google Chrome,我想制作一个当用户刷新时可以保持其状态的网页 此站点上的多个答案建议将状态存储在浏览器的本地存储中。这个很好用。某种程度上。但是,当用户在多个选项卡中打开同一页并刷新其中一个选项卡时,状态将从不同的选项卡恢复。不太好 另一种方法是将状态放入表单输入中。在Firefox中,表单输入的状态是通过刷新保持的,尽管有些人考虑过。不幸的是,并非所有人都使用Firefox 所以我尝试使用historyAPI。以下是我尝试过的: 试验 var input=document.getElementsByTagN
history
API。以下是我尝试过的:
试验
var input=document.getElementsByTagName(“输入”)[0]
input.value=history.state
console.log(“加载状态”,history.state)
window.onunload=函数(){
history.replaceState(input.value,“”)
console.log(“保存状态”,history.state)
}
卸载页面时,它使用history.replaceState()
存储状态。加载时,它读取history.state
。应该有用吧
它在Firefox中工作,但在Chrome中不起作用。在Chrome中,当读取处理程序中的history.state
时,返回正确的值,但在刷新页面后,该值恢复为null
。它不应该被保存吗
在Chrome中使用history
可以保存状态吗?有没有其他好的方法来实现这一点?我知道可以将状态存储在URL中(使用history.replaceState()
或location.hash
),但用户可以看到它,如果状态很大,它可能无法正常工作。还有window.name
,但它会泄漏到其他页面。如果您可以将状态存储在localStorage中,并且可以知道不同选项卡的状态在选项卡中得到更新,您能否将状态存储为键为(生成的唯一键)的映射选项卡的名称,值是该选项卡的状态?如果您可以将状态存储在localStorage中,并且可以知道其他选项卡的状态在选项卡中已更新,那么您能否将状态存储为映射,其中键是选项卡的(生成的唯一)名称,值是该选项卡的状态?会话存储
。类似于localeStorage
。但是对于每个选项卡..cookies呢?sessionStorage
在Chrome中不适用于文件:
URL。sessionStorage
。类似于localeStorage
。但是对于每个选项卡..cookies呢?sessionStorage
在Chrome中不适用于文件:
URL。因此,刷新后,选项卡如何知道它的名称呢?我写过,“如果你知道不同选项卡的状态在选项卡中得到了更新”。因此,如果答案是肯定的,那么您确实有一些机制来区分选项卡。否则,请考虑这个(我只是在大声地思考):如果你没有这个页面的输入参数,你就创建一个名字,删除当前页面的历史(从浏览器历史),然后用你创建的(唯一的)名字重新加载页面。通过查找本地存储来确保它是唯一的。因此,刷新后,选项卡如何知道它的名称呢?我写过,“如果您知道另一个选项卡的状态在选项卡中得到了更新”。因此,如果答案是肯定的,那么您确实有一些机制来区分选项卡。否则,请考虑这个(我只是在大声地思考):如果你没有这个页面的输入参数,你就创建一个名字,删除当前页面的历史(从浏览器历史),然后用你创建的(唯一的)名字重新加载页面。通过查找本地存储来确保它是唯一的。