Слушатель событий хранилища не работает должным образом в инкогнито или в приватном окне - PullRequest
1 голос
/ 27 июня 2019

В обычных браузерах слушатель событий хранилища работает и работает правильно

Код прослушивателя событий указан ниже

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

Изменение хранилища с помощью

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

Когда какие-либо изменения вносятся в локальное хранилище, оно корректно вызывает другое событие хранения на вкладке браузера. Но когда я попробовал один и тот же код в инкогнито или в приватном окне, он нормально работал в браузерах chrome и mozilla, но не в браузерах Edge и Internet Explorer

Но в случае частных окон браузера IE, Edge и Brave это событие не вызывается на моем веб-сайте. В других браузерах он работает в соответствии с ожиданиями. Есть ли способ заставить его работать в окне инкогнито IE и Edge браузеров

1 Ответ

0 голосов
/ 27 июня 2019

Событие хранения происходит при изменении области изменения окна.

Примечание. Событие хранения активируется только тогда, когда окно , отличное от него , вносит изменения.

Вы можете проверить следующий пример кода:

<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).

Подробнее о событии хранения, пожалуйста, проверьте эту статью .

...