Как вызвать внешнюю функцию внутри onbeforeunload(), если пользователь решает выйти со страницы?
Я видел много примеров и пробовал их, где указанная функция вызывается, если пользователь решает остаться на странице. Мне нужно вызвать внешнюю функцию непосредственно перед тем, как страница будет выгружена, если пользователь решит покинуть страницу.
onbeforeunload = function(){
if(user decides to leave the page){
func1();
}
else {
//Don't do anything
}
}
Я попытался использовать "onunload", но мне нужно запросить пользователя перед вызовом функции.
Заранее спасибо!
2 ответа
Вы должны использовать оба window.onbeforeunload
а также window.onunload
, onbeforeunload
возвращает строку, и это заставляет браузер отображать подтверждение перед выходом. Если пользователь подтверждает уход, onunload
будет запущен, а затем вы делаете то, что вам нужно, прежде чем страница будет выгружена.
window.onbeforeunload = function() {
return "Are you sure you want to leave?";
};
window.onunload = function() {
func1();
};
Существуют ограничения на то, что вы можете делать в обоих этих обработчиках событий, потому что вы не можете запретить пользователю покидать страницу, если он действительно этого хочет. Вредоносное ПО использовало эти события для повторного открытия страницы, теперь это запрещено.
Похоже, вы пытаетесь запустить некоторый пользовательский код, прежде чем пользователь покидает страницу, если beforeunload
не работает для вас, потому что браузер уходит до запуска кода, вместо этого вы можете добавить mouseleave
слушатель события document
, Если мышь пользователя покидает документ, очень вероятно, что он покидает вашу страницу (чтобы закрыть страницу, изменить вкладки, использовать другую программу на своем компьютере и т. Д.).
document.addEventListener('mouseleave', () => {
console.log('mouse left the document');
// your code or function here
});
Попробуйте запустить приведенный выше фрагмент и переместите указатель мыши в окно результатов.