Вопрос по javascript, submit, onunload – Проблема с отправкой формы на window.unload

1

У меня проблема с отправкой формы при выгрузке окна, если информация формы была обновлена ​​(album.updated = true):

window.onunload = function(evnt) {
  if (album.updated) {
    var save = confirm('Do you want to save changes?');
    if (save) {
      alert('submitting form...');
      document.edit_photos.submit();
    }
  }
}

Он предупреждает «отправка формы», но ничего не сохраняется. Но когда я делаю регулярную отправку с кнопкой Сохранить - это сохраняет информацию. Что здесь может быть не так?

Ваш Ответ

2   ответа
2

unload, Одно время было разрешено больше, но плохие сайты использовались для того, чтобы заманить пользователя в ловушку и запутать его, поэтому это было заблокировано.

Единственное взаимодействие, которое вы можете получить, это черезonbeforeunload, И вы также не можете достоверно запросить сохранение здесь ... как правило, вы не можете обойти навигацию, отправив форму напрямую. Вы можете попробовать опубликовать запрос на сохранение, используяXMLHttpRequest, но нет гарантии, что он достигнет сервера до того, как страница уйдет.

Таким образом, все, что вы можете разумно сделать, это предупредить пользователя о несохраненных данных, предлагая им отменить навигацию и сохранить сами данные:

window.onbeforeunload= function() {
    if (album.updated)
        return (
            'You have unsaved changes to this album. Are you sure you wish '+
            'to leave without saving?'
        );
};
3

unload событие.

Отправка запроса AJAXможет быть быть немного более надежным, но на него также не следует полагаться.

Вместо этого вы должны обрабатыватьonbeforeunload событие иreturn "You have unsaved changes";.
Это заставит браузер показать диалоговое окно подтверждения, позволяющее пользователю отменить навигацию. (После чего он может сохранить вручную)

Похожие вопросы