McK*_*McK 12 javascript browser iframe session-storage local-storage
关于localStorages的标准W3C标准说:
共享一个主机名的不同作者(例如,托管内容的用户)
geocities.com
共享一个本地存储对象.没有功能可以通过路径名限制访问.因此,敦促共享主机上的作者避免使用这些功能,因为对其他作者来说读取数据并覆盖它是微不足道的.
但对于sessionStorages,据说它确实为标签和窗口提供了单独的sessionStorages,甚至来自同一个来源.
但似乎iframe确实共享sessionStorage.
有没有办法在同一来源的via iframe上有单独的sessionStorage.
编辑:由于标签/窗口确实有单独的sessionStorage存在混淆,这里是一个示例页面.将代码保存在文件中,然后使用两个不同的选项卡将其打开.然后刷新一个选项卡5次,刷新另一个选项卡1次.你会看到数字不同.
<!DOCTYPE html>
<html>
<body>
<div id="result"></div>
<script>
sessionStorage.setItem("counter", (parseInt(sessionStorage.getItem("counter"), 10) || 0 ) + 1);
document.getElementById("result").innerHTML = sessionStorage.getItem("counter");
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Edit2:我到目前为止尝试使用的是iframe sandbox
属性.但是我在iframe中遇到了一个错误,我根本不能使用sessionStorage.我不得不补充一下sandbox="allow-same-origin"
.但是,sessionStorage在所有iframe中再次相同.
提前致谢.
@adeneo is correct when indicating
the storage container is set to the origin domain, and iframes from the same origin share the same object, even if the iFrame opens a new session
A workaround does not appear to currently exist
<!DOCTYPE html>
<html>
<body>
<iframe name="one" src="sessionStorageTest.html"></iframe>
<iframe name="two" src="sessionStorageTest1.html"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
sessionStorageTest.html
<!DOCTYPE html>
<html>
<body>
<div id="result"></div>
<script>
sessionStorage.setItem("counter", (parseInt(sessionStorage.getItem("counter"), 10) || 0 ) + 1);
document.getElementById("result").innerHTML = sessionStorage.getItem("counter");
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
sessionStorageTest1.html
<!DOCTYPE html>
<html>
<body>
<div id="result"></div>
<script>
var i = 0;
while (++i < 10) {
sessionStorage.setItem("counter", (parseInt(sessionStorage.getItem("counter"), 10) || 0 ) + 1);
document.getElementById("result").innerHTML = sessionStorage.getItem("counter");
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在 plnkr 上演示http://plnkr.co/edit/Etel4ToABM6gWOw6qAE5?p=preview
归档时间: |
|
查看次数: |
1476 次 |
最近记录: |