Я застрял этот вопрос на месяц. Любой, кто знает решение, помогите.
Я хотел бы закрыть все дочерние окна, если главное окно закрыто (нажмите кнопку «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>