Подскажите ,как реализовать защиту от случайного закрытия вкладки ? Я вкурсе про window.onunload
и window.onbeforeunload
, но они работают не всегда и некорректно. Например, в Opera они вовсе не воспринимаются. Нужно универсальное, которое работало бы везде. Можете что подсказать ?
К сожалению, универсального решения нет.
onbeforeunload
поддерживается в Opera на основе движка WebKit, но не работает в предыдущих версиях, основанных на Presto.
С точки зрения дизайна пользовательского интерфейса, я бы рекомендовал просто придерживаться onunload
. И выполнять ajax
в данном методе, чтобы сохранить состояние вашей страницы.
onbeforeunload
не рекомендуется использовать, так как оно мало что делает, кроме как раздражает пользователя предупреждающим сообщением.
возможно, вам поможет данная статья
https://www.zachleat.com/web/dont-let-the-door-hit-you-onunload-and-onbeforeunload/
Стандартными событиями выгрузки документа являются только beforeunload
и unload
.
Они работают всегда (при их поддержке браузером), но есть ограничения допустимых действий в обработчиках этих событий.
В частности, диалоги вызванные из обработчиков события unload
документа - не будут отображены.
Остальные ограничения, целиком и полностью зависят от браузера и его настроек. На эти вещи нельзя повлиять из JavaScript документа (иногда можно из расширения).
Отмена выгрузки документа возможна только в обработчике события beforeunload
- опять же, лишь в том случае если браузер разрешит запрос пользователю:
window.addEventListener('beforeunload', function (e) {
// Попытка отменить выгрузку стандартным способом
e.preventDefault();
// Установка строки запроса пользователю
e.returnValue = 'Вы уверены в том что хотите покинуть страницу?';
});
Браузер может проигнорировать строку в returnValue
, показав свой текст, но присвоение этому свойству какого-либо строкового значения требуется для показа диалога (как минимум в Chrome).
"Тихая" отмена выгрузки, без диалога подтверждения - ни в одном браузере не поддерживается, насколько знаю. И это правильно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как проверить, что в ячейке лежит число или нет с помощью javascript?
Подскажите пожалуйста, кто знает, есть Windows на котором установлена Visual Studio и инструменты CordovaСоздал приложение для Android, и хочу теперь развернуть...
Никак не могу разобраться почему не пропадает меню при клике вне картыМеню пропадает только при клике на кнопку меню