在普通浏览器中,Storage 事件监听器正常工作和触发
事件监听代码如下
window.addEventListener('storage', function (e) {
console.log("storage event occured here");
},false);
使用改变存储
localStorage.setItem('logout-event', 'logout'+Math.random());
当对本地存储进行任何更改时,它会正确触发其他浏览器选项卡存储事件。但是当我在隐身或私有(private)窗口中尝试相同的代码时,它在 chrome
和 mozilla
浏览器中正常工作,但在 Edge
和 Internet Explorer 中无效
浏览器
但是在 IE
、Edge
和 Brave
浏览器私有(private)窗口的情况下,我的网站不会触发此事件。在其他浏览器中,它按预期工作。
有没有办法让它在 IE
和 Edge
浏览器的隐身窗口中工作
最佳答案
当窗口的变化区域发生变化时发生存储事件。
注意:存储事件仅在自身以外窗口进行更改时触发。
您可以检查以下示例代码:
<button onclick="changeValue()">Change a Storage Item</button>
<p id="demo"></p>
<script>
window.addEventListener("storage", function myFunction(event) {
document.getElementById("demo").innerHTML = "A change was made in the storage area";
console.log("storage event occured here");
}, false);
function changeValue() {
var x = window.open("popuppage.html", "myWindow", "width=200,height=100");
x.localStorage.setItem("mytime", Date.now());
x.close();
}
</script>
当打开一个新窗口并更改本地存储时,会触发存储事件。上面的代码在我这边运行良好(使用 IE 11 和 MS Edge 44 版本)。
更多存储事件详情,请查看this article .
关于javascript - 存储事件监听器在隐身或私有(private)窗口中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56785954/