То, что вы не используете функцию, не означает, что она бесполезна.
Сеть Stack Exchange, GMail, Grooveshark, Yahoo!Mail и Hotmail используют приглашение onbeforeunload, чтобы предотвратить / предупредить пользователей о том, что они покидают страницу после того, как они начали что-то редактировать.О, да, почти каждая настольная программа , которая принимает сохраняемые данные пользовательского ввода, использует этот шаблон UX «запросить пользователя перед отъездом».
У меня есть функция, которая работает аналогичноэто:
window.onbeforeunload = function(){
// only prompt if the flag has been set...
if(promptBeforeLeaving === true){
return "Are you sure you want to leave this page?";
}
}
Когда пользователь пытается отойти от страницы, браузер предоставляет ему возможность покинуть или остаться на странице.Если пользователь выбирает «Оставить эту страницу», а затем снова быстро щелкает ссылку, прежде чем страница полностью выгружается, диалоговое окно снова запускается.
Существуют ли надежные решения этой проблемы?
Примечание: следующее НЕ решение:
var alreadyPrompted = false;
window.onbeforeunload = function(){
// only prompt if the flag has been set...
if(promptBeforeLeaving === true && alreadyPrompted === false){
alreadyPrompted = true;
return "Are you sure you want to leave this page?";
}
}
, потому что пользователь может выбрать опцию «Оставаться на странице», что приведет к тому, что будущие onbeforeunload
s перестанут работать.