Javascript 本地存储在Firefox上是如何工作的?
编辑。我对本地存储是如何沙盒的感到困惑。我在MacBook Air上创建了一个文件夹和一个简单的网页,而没有绑定任何其他文件。该网页只有一个按钮和指向同一页面的链接。单击按钮时,按钮计数从本地存储器读取,增加1,增加的值使用相同的键写入本地存储器:Javascript 本地存储在Firefox上是如何工作的?,javascript,firefox,local-storage,Javascript,Firefox,Local Storage,编辑。我对本地存储是如何沙盒的感到困惑。我在MacBook Air上创建了一个文件夹和一个简单的网页,而没有绑定任何其他文件。该网页只有一个按钮和指向同一页面的链接。单击按钮时,按钮计数从本地存储器读取,增加1,增加的值使用相同的键写入本地存储器: <!DOCTYPE html> <head> <script> function getCount() {return parseInt(localStorage.getItem("count") ||
<!DOCTYPE html>
<head>
<script>
function getCount() {return parseInt(localStorage.getItem("count") || 0)}
function incCount() {localStorage.setItem("count", getCount()+1)}
function setText() {document.getElementById("btn").innerHTML = getCount() + " clicks"}
</script>
</head>
<body onpageshow ="setText()">
<button id="btn" onclick="incCount(); setText()">clicks</button>
<a href="/">open the same page</a>
</body>
函数getCount(){return parseInt(localStorage.getItem(“count”)| | 0)}
函数incCount(){localStorage.setItem(“count”,getCount()+1)}
函数setText(){document.getElementById(“btn”).innerHTML=getCount()+“单击”}
咔哒声
现在我npm安装-ghttpserver
,从文件夹中运行httpserver
,并在Firefox上执行以下测试。根据评论中的建议,我在Firefox 57.0.1上创建了一个新的配置文件,以进行以下测试。我还每晚在Firefox上运行测试,结果是一样的
测试1
http://localhost:8080
在非私人浏览模式下打开“选项卡1”。删除所有本地存储(如果有)http://localhost:8080
在非私人浏览模式下打开“选项卡1”。删除所有本地存储(如果有)- Firefox在正常模式下:(X,A,B,C,D)=(10,1,2,3,3)
- Firefox在私人浏览模式下:(X,A,B,C,D)=(0,1,1,2,2)
- Chrome(正常或私有模式)或Safari(仅限正常模式;我无法在私有模式下将任何内容放入本地存储):(X、A、B、C、D)=(10,2,2,3,3)
所以,我的问题是,这是Firefox中的一个bug吗。如果这是合法的,那么本地存储在Firefox上究竟是如何工作的呢?在这个网站上有一个类似的问题(“”),但在这个问题上,涉及的文档来自不同的来源。您使用的是什么版本的Firefox?在57.0 64位Windows上,行为与您描述的完全相同。如果您使用的是私人浏览,我相信Firefox会为每个选项卡使用存储范围。您能检查事件是否有效吗<代码>窗口.addEventListener('storage',函数(event){if(event.key=='count')document.getElementById(“btn”).innerHTML=event.newValue+“clicks”})代码>@user740006您所描述的可能是一个bug。您是否可以尝试安装早期版本(或夜间版本)并查看问题是否仍然存在?此外,对于私人浏览和本地存储,请参考以下内容:在FF中,它被视为会话存储(每个选项卡)@nipuna777谢谢。我稍后会尝试(我现在使用的是慢速公共wifi),看看会发生什么。尝试创建一个新的Firefox配置文件(运行
Firefox-P
打开配置文件切换器),看看新配置文件上是否仍然存在问题。这将消除可能的隐私设置和扩展。