Подтвердить что ты не робот

Window.onunload не работает должным образом в браузере Chrome. Может кто-нибудь мне помочь?

Я написал этот код

function winUnload() {
    alert("Unload Window");
    MyMethod();
}

window.onunload = function() { winUnload(); }

Этот код отлично работает в IE и Firefox. Но этот код не работает в Chrome. Оба оператора alert("Unload Window"); и MyMethod(); не работают.

4b9b3361

Ответ 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

Ответ 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>

Спасибо и приветствия