Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在刷新期间维护页面状态?_Javascript_Html_Google Chrome - Fatal编程技术网

Javascript 如何在刷新期间维护页面状态?

Javascript 如何在刷新期间维护页面状态?,javascript,html,google-chrome,Javascript,Html,Google Chrome,我想制作一个当用户刷新时可以保持其状态的网页 此站点上的多个答案建议将状态存储在浏览器的本地存储中。这个很好用。某种程度上。但是,当用户在多个选项卡中打开同一页并刷新其中一个选项卡时,状态将从不同的选项卡恢复。不太好 另一种方法是将状态放入表单输入中。在Firefox中,表单输入的状态是通过刷新保持的,尽管有些人考虑过。不幸的是,并非所有人都使用Firefox 所以我尝试使用historyAPI。以下是我尝试过的: 试验 var input=document.getElementsByTagN

我想制作一个当用户刷新时可以保持其状态的网页

此站点上的多个答案建议将状态存储在浏览器的本地存储中。这个很好用。某种程度上。但是,当用户在多个选项卡中打开同一页并刷新其中一个选项卡时,状态将从不同的选项卡恢复。不太好

另一种方法是将状态放入表单输入中。在Firefox中,表单输入的状态是通过刷新保持的,尽管有些人考虑过。不幸的是,并非所有人都使用Firefox

所以我尝试使用
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。因此,刷新后,选项卡如何知道它的名称呢?我写过,“如果你知道不同选项卡的状态在选项卡中得到了更新”。因此,如果答案是肯定的,那么您确实有一些机制来区分选项卡。否则,请考虑这个(我只是在大声地思考):如果你没有这个页面的输入参数,你就创建一个名字,删除当前页面的历史(从浏览器历史),然后用你创建的(唯一的)名字重新加载页面。通过查找本地存储来确保它是唯一的。因此,刷新后,选项卡如何知道它的名称呢?我写过,“如果您知道另一个选项卡的状态在选项卡中得到了更新”。因此,如果答案是肯定的,那么您确实有一些机制来区分选项卡。否则,请考虑这个(我只是在大声地思考):如果你没有这个页面的输入参数,你就创建一个名字,删除当前页面的历史(从浏览器历史),然后用你创建的(唯一的)名字重新加载页面。通过查找本地存储来确保它是唯一的。