Вы должны использовать событие beforeunload
. Вы можете запустить синхронизированный запрос ajax.
$(window).bind('beforeunload', function() {
$.ajax({
url: 'foo',
async: false,
// ...
});
});
Имейте в виду, что onbeforeunload
не поддерживается некоторыми старыми браузерами. Даже если этот метод работает, я не уверен, как долго вы можете (должны?) Блокировать это событие. Было бы очень плохой пользовательский опыт, если бы этот запрос заблокировал несколько секунд.
Хороший компромисс - это, вероятно, рассказать пользователю, что что-то изменило то, что еще не было сохранено. Сделайте это с помощью нескольких булевых проверок и, наконец, верните string value
в запросе onbeforeunload
. Затем браузер будет изящно спросить пользователя, действительно ли он хочет покинуть ваш сайт, также показывая строку, которую вы предоставили.
Javascript работает в браузере, PHP выполняется на сервере (если вы не работаете node.js или что-то но я не подозреваю в этом случае), поэтому javascript должен будет что-то говорить, подумайте ajax, чтобы что-то вызвать на бэкэнде. – PurplePilot