Подтвердите, что пользователь отправил форму перед закрытием страницы через jquery

Я хочу получить подтверждение от пользователя, чтобы сохранить форму перед закрытием страницы с помощью функции javascript confirm(). Если пользователь нажал кнопку ОК, запустите действие формы сохранения, а если нажал кнопку Отмена, закройте страницу.

для этого я пишу это:

window.onbeforeunload = function() {
    if (confirm('Are you want to save Form ?')){
        //saveActions
    }
    return 'You have unsaved changes!';
}

Но событие onbeforeunload для оконного объекта не запускает функцию подтверждения(), а просто вызывает собственное диалоговое окно подтверждения со строкой, которая находится рядом с инструкцией return.

Как я могу это сделать?


person A.B.Developer    schedule 12.01.2016    source источник
comment
вы не можете использовать confirm или alert внутри onbeforeunload. Многие браузеры даже не будут использовать возвращаемую строку для отображения. Много лет назад этой функцией так злоупотребляли, что в ней мало что можно сделать.   -  person charlietfl    schedule 12.01.2016
comment
Возможный дубликат confirm() в window.onbeforeunload   -  person Manasov Daniel    schedule 12.01.2016
comment
Пожалуйста, не используйте всплывающие окна, когда пользователь пытается закрыть вкладку! Это один из худших доступных методов. Это очень раздражает, когда вы пытаетесь просто закрыть вкладку, но всплывающее окно пытается вам помешать. Вместо этого как насчет автоматического сохранения через AJAX или локальную память или обнаружения намерения выхода путем проверки положения указателя (большинство пользователей нажимают x на вкладке или в рамке окна). Также имейте в виду, что большинство браузеров запоминают то, что вы вводили в формы.   -  person Hubert Grzeskowiak    schedule 12.01.2016
comment
@ManasovDaniel, предложенная вами тема не была решением моей проблемы   -  person A.B.Developer    schedule 12.01.2016
comment
@Hubert Grzeskowiak - в зависимости от приложения, я считаю, что для несохраненных данных иногда это приемлемо - в сочетании с автосохранением, чтобы уменьшить количество случаев этого. Я не говорю, что это нормально только потому, что они это делают, но Facebook и Gmail — два примера, которые приходят на ум, где это происходит.   -  person Dave Pile    schedule 13.01.2016


Ответы (1)


Это естественное поведение.

window.onbeforeunload ограничен в работе, чтобы предотвратить его использование.

Отговаривать или опрашивать мнение пользователя после окончательного закрытия — плохая практика.

Попробуйте такие варианты, как периодическое сохранение ваших данных, наличие внутренней кнопки «Закрыть» и т. д.

person Charlie    schedule 13.01.2016