Window.onunload не работает должным образом в браузере Chrome. Может кто-нибудь мне помочь?
Я написал этот код
function winUnload() {
alert("Unload Window");
MyMethod();
}
window.onunload = function() { winUnload(); }
Этот код отлично работает в IE и Firefox. Но этот код не работает в Chrome. Оба оператора alert("Unload Window");
и MyMethod();
не работают.
Ответы
Ответ 1
Есть некоторые действия, которые не работают в chrome, внутри события unload. Оповещения или подтверждения являются такие вещи.
Но что возможно (AFAIK):
- Открыть всплывающие окна (с окном .open) - но это будет просто работать, если блокировщик всплывающих окон отключен для вашего сайта.
- Возвращает простую строку (в событии beforeunload), которая вызывает окно подтверждения, которое запрашивает пользователя, если он/она хочет покинуть страницу.
Пример для # 2:
$(window).on('beforeunload', function() {
return 'Your own message goes here...';
});
Демо: http://jsfiddle.net/PQz5k/
Ответ 2
Я знаю, что это устарело, но я нашел способ разгрузить работу с помощью Chrome
window.onbeforeunload = function () {
myFunction();
};
Ответ 3
Армин ответ настолько полезен, спасибо. # 2 - это то, что наиболее важно знать при попытке настроить разгрузочные события, которые работают в большинстве браузеров: вы не можете оповещать() или confirm(), но при возврате строки будет генерироваться мода подтверждения.
Но я обнаружил, что даже при возврате строки у меня были некоторые проблемы с перекрестным браузером, характерные для Mootools (с использованием версии 1.4.5 в этом случае). Эта специфичная для Mootools реализация отлично поработала в Firefox, но не привела к всплытию подтверждения в Chrome или Safari:
window.addEvent("beforeunload", function() {
return "Are you sure you want to leave this page?";
});
Итак, чтобы заставить мое событие onbeforeonload работать в браузерах, мне пришлось использовать собственный вызов JavaScript:
window.onbeforeunload = function() {
return "Are you sure you want to leave this page?";
}
Не уверен, почему это так, или если оно исправлено в более поздних версиях Mootools.
Ответ 4
Попробуйте window.onbeforeunload вместо window.onunload для хром.
Вы также можете попробовать вызвать onbeforeunload из тега body > , который может работать в chrome.
Однако у нас есть проблема с функцией разгрузки в браузере Chrome.
пожалуйста, проверьте
location.href не работает в chrome при вызове события body/window unload
Спасибо,
Nived
Ответ 5
Вы можете попробовать использовать событие showhide для Chrome and Safari
.
Проверьте эти ссылки:
Как обнаружить поддержку браузера для страницыShow и pageHide?
http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
Ответ 6
Событие onunload не срабатывает, если событие onload не срабатывает. К сожалению, событие onload ожидает загрузки всех двоичных файлов (например, изображений), а запускает встроенные скрипты перед срабатывает событие onload. DOMContentLoaded срабатывает, когда страница видна, прежде чем он загрузится. И теперь стандарт в HTML 5, и вы можете test for браузера, но обратите внимание, что для этого требуется <!DOCTYPE html>
(по крайней мере, в Chrome). Однако я не могу найти соответствующее событие для разгрузки DOM. И такое гипотетическое событие может не работать, потому что некоторые браузеры могут поддерживать DOM для выполнения функции "вкладка восстановления".
Единственным возможным решением, которое я нашел до сих пор, является API видимости страницы, для которого требуется <!DOCTYPE html>
.
Ответ 7
Ваш код здесь Дорогой:
<script>
var unloadEvent = function (e) {
var confirmationMessage = "Warning: Leaving this page will result in any unsaved data being lost. Are you sure you wish to continue?";
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Webkit, Safari, Chrome etc.
};
window.addEventListener("beforeunload", unloadEvent);
</script>
Спасибо и приветствия