Для тех, кто наткнулся на этот пост, это фрагмент кода, который я использую для обнаружения поддержки onbeforeunload, и если браузер не поддерживает его, я переключаюсь на onunload (обратите внимание на использование jquery, очевидно, не требуется).В моем случае я использую этот код (и немного больше), чтобы проверить, все ли активные AJAX-запросы все еще активны, и остановить навигацию пользователя.Имейте в виду, что использование onunload не идеально, поскольку браузер по-прежнему будет перемещаться в сторону от страницы, но, по крайней мере, он дает вам возможность предупредить пользователя о том, что данные могут быть потеряны, и они должны вернуться и проверить.
Вы заметите, что я использую функцию isEventSupported (), доступную в https://github.com/kangax/iseventsupported для поддержки кросс-браузерного обнаружения доступных событий.
// If the browser supports 'onbeforeunload'
if (isEventSupported('beforeunload', window)) {
$(window).on('beforeunload', function(){
return 'This page is still sending or receiving data from our server, if you recently submitted data on this page please wait a little longer before leaving.';
});
}
// The browser doesn't support 'onbeforeunload' (Such as Opera), do the next best thing 'onunload'.
else {
$(window).on('unload', function(){
alert('This page was still sending or receiving data from our server when you navigated away from it, we would recommend navigating back to the page and ensure your data was submitted.');
});
}