【发布时间】:2021-07-23 06:04:51
【问题描述】:
这是一个适用于 Safari 14.0(和 Chrome、Firefox)但不适用于 Safari 14.1 的最小案例: https://ffvix.csb.app
- 在 2 个选项卡中打开演示
- 输入一些文字,然后按“提交”
- 切换到其他选项卡并按“获取”
应该可以通过 localStorage 在同一域上托管的 2 个选项卡之间同步消息。
演示代码:
<h1>To localStorage</h1>
<form id="form">
<input id="text" type="text" />
<input type="submit" />
</form>
<h1>From localStorage</h1>
<button id="getout">get</button>
<p id="out"></p>
<script type="text/javascript">
const form = document.getElementById("form");
const text = document.getElementById("text");
const out = document.getElementById("out");
const getout = document.getElementById("getout");
form.addEventListener("submit", function (e) {
localStorage.setItem("test", text.value);
e.preventDefault();
});
function getIt() {
out.textContent = localStorage.getItem("test");
}
getIt();
getout.addEventListener("click", getIt);
window.addEventListener("storage", getIt);
</script>
【问题讨论】:
-
您检查过设备上 Safari 的隐私设置吗?
-
我认为这是默认设置。 “防止跨站点跟踪”已开启,但这不应该是跨站点的事情。
-
标签是否在“新的私人窗口”中打开?如果是,则更改为“新窗口”,退出 safari 并重新打开并检查。应该是固定的
-
这不是私人窗口。
-
@forresto 我可以使用您在 Safari 版本 14.1 (14611.1.21.161.5) 和 macOS 10.14.6 (18G9028) 上重现的步骤重现该问题。
标签: javascript safari local-storage privacy