javascript - 存储事件监听器在隐身或私有(private)窗口中无法正常工作

标签 javascript cross-browser local-storage microsoft-edge addeventlistener

在普通浏览器中,Storage 事件监听器正常工作和触发

事件监听代码如下

window.addEventListener('storage', function (e) {
      console.log("storage event occured here");
},false);

使用改变存储

 localStorage.setItem('logout-event', 'logout'+Math.random());

当对本地存储进行任何更改时,它会正确触发其他浏览器选项卡存储事件。但是当我在隐身或私有(private)窗口中尝试相同的代码时,它在 chromemozilla 浏览器中正常工作,但在 EdgeInternet Explorer 中无效 浏览器

但是在 IEEdgeBrave 浏览器私有(private)窗口的情况下,我的网站不会触发此事件。在其他浏览器中,它按预期工作。 有没有办法让它在 IEEdge 浏览器的隐身窗口中工作

最佳答案

当窗口的变化区域发生变化时发生存储事件。

注意:存储事件仅在自身以外窗口进行更改时触发。

您可以检查以下示例代码:

<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/

相关文章:

javascript - 获取同时包含文本和复选框的标签中的文本

javascript - 转换扩展名并使用应用程序打开它

html - 跨源 postMessage 在 IE10 中被破坏了吗?

css - 位置 :fixed within an overflow:hidden parent - cross-browser alternative to background-attachment:fixed?

javascript - 浏览器对选择器 API 的支持

Javascript 视频快退和快进

javascript - 带有嵌套 iframe 的 Jquery Auto Height iframe

ios - 在 HTML5 iOS 应用程序中安全地存储数据 - localStorage/WebSQL/IndexedDB 是否合适?

jquery - 将本地数据库与/JQuery Mobile 一起使用?

javascript - HTML5 本地存储不持久