【发布时间】:2019-08-27 06:02:50
【问题描述】:
我有以下示例代码(托管在 https://d-dsuo5j1fc.now.sh/),它应该显示 2 个不断变化的日期字符串。第一个是简单的 500 毫秒循环,第二个是 StorageEvent 的结果。这个想法是这个页面在两个选项卡中加载,这样每个选项卡都会收到另一个选项卡中本地存储更改的警报。
它在 Chrome/iOS 中运行良好,但在 Safari iOS 中,第二个字符串从未更新,这表明它没有触发 onStorage 事件。
<body>
Own timer<span id='s'> </span><br>
From storage event <span id='ev'> </span>
</body>
<script>
let s = document.getElementById('s');
let ev = document.getElementById('ev');
function onStorageEvent(storageEvent){
ev.innerHTML = storageEvent.newValue; // display the storage event value
}
window.addEventListener('storage', onStorageEvent, false);
// every 500ms, generate a new string, display it and write it to localstorage
setInterval(()=>{
let d = new Date().toGMTString() + ' ' + Math.random();
s.innerHTML = d; // display our fresh value
localStorage.setItem('foo',d); // and write it to localstorage
}
,500);
</script>
另外,对于 iOS 上 Safari 的 HTML5 不兼容问题,有什么好的资源建议吗?
【问题讨论】:
-
您是否在 Safari 上尝试过类似
alert(StorageEvent)的操作?
标签: javascript html safari local-storage mobile-safari