Кажется, что из всех браузеров только Opera не поддерживает события onunload/onbeforeunload. (Прошло пятнадцать лет, Opera!) Решения этой проблемы обсуждались много раз, например, здесь: поддержка onbeforeunload обнаружение
К сожалению, начиная с Opera 11.51, ("onbeforeunload" in window) == true
, но фактическое событие onbeforeunload никогда не выполняется!
Моему веб-приложению необходимо отправлять данные на сервер, когда пользователь покидает страницу; Я использую для этого синхронный запрос ajax. Похоже, мне пришлось прибегнуть к кнопке «Сохранить» где-то на странице, чтобы скрыть проблемы с Opera. Однако я не хочу, чтобы эта кнопка смущала пользователей, чьи браузеры поддерживают автоматическое сохранение через ajax, поэтому мне бы очень хотелось, чтобы эта кнопка отображалась только в Opera.
Является ли мой единственный выбор обнаружением браузера? Проблема в том, что у Opera есть возможность маскироваться под другие браузеры.
onuload
для Opera? - person c69   schedule 23.09.2011body.onunload
работает в Opera 11.5, если вы не звонитеwindow.location.reload()
- person Lyth   schedule 23.09.2011<body onunload = 'alert("test")'>
,body.onunload = function() {alert("test")};
иbody.unload(function() {alert("test")});
не работают на моей машине. Opera 11.51, без надстроек, Windows 7 64bit. - person Unknown artist   schedule 23.09.2011<body onunload="alert('!')"><p onclick="window.location.reload();">Click here to reload</p><p><a href="http://ya.ru">Get away</a></p></body>
- У меня работает onunload в этом случае при выходе со страницы. В любом случае, вы не получите код, выполненный в Opera, если закроете страницу/приложение, поэтому лучшим способом может быть реализация какого-либо другого способа сохранения данных. Как насчет локального хранилища? - person Lyth   schedule 23.09.2011