Microsoft Edge не может установить localStorage при событии выгрузки - PullRequest
0 голосов
/ 03 апреля 2020

Я застрял этот вопрос на месяц. Любой, кто знает решение, помогите.

Я хотел бы закрыть все дочерние окна, если главное окно закрыто (нажмите кнопку «X» на вкладке или в окне браузера) без какого-либо всплывающего диалога. Однако, если дочернее окно закрыто само по себе, появится всплывающее диалоговое окно с запросом о выходе из страницы. Итак, я использую localStorage для управления этим сценарием. (посмотрите код ниже)

Проблема в том, что любой браузер, например Inte rnet Exlorer, Chrome работает нормально, но Microsoft Edge (версия 44), похоже, не устанавливает localStorage правильно. На MS Edge он продолжает отображать диалог. Я предполагаю, что это проблема в браузере MS Edge при установке localStorage при событии unload.

Кто-нибудь получил такую ​​же проблему? Заранее благодарим за ваше предложение и помощь.

Примечание. Прежде чем нажимать кнопку "X" в главном окне, убедитесь, что дочернее окно загрязнено.

выгрузить. html

<html>
<body>

<p>Login and Open child window:</p>

<button onclick="openWindow()">Login</button>

<p>Make child window dirty before close: </p>
<input type="text" />

<script>
var mywin;
localStorage.setItem("isOnline", "true");        

function setIsonlineFalse() {
  localStorage.setItem("isOnline", "false");
}

function getIsonline() {
  document.getElementById("isonline").innerHTML = localStorage.getItem("isOnline");;
}

function openWindow() {
  mywin = window.open('unload.html', 'child', 'fullscreen=no, left=10,top=10,width=700,height=700');
}

function closeWindow()
{
    if (mywin != null)
        {mywin.close();
    }
    return false;
}

window.addEventListener('beforeunload', function (e) { 
    console.log('isonline at before',   localStorage.getItem("isOnline"));
        if (localStorage.getItem("isOnline") == "true"){
            e.preventDefault(); 
            e.returnValue = ''; 
            return "Leaving this page will reset the wizard";
        }

}); 

window.addEventListener('unload', function (e) { 
    localStorage.setItem("isOnline", "false");  
    console.log('isonline at unload',   localStorage.getItem("isOnline"));
    closeWindow();

}); 


</script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...