Сеть Stack Exchange, GMail, Grooveshark, Yahoo! Почта, и 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
.