Я пытаюсь обнаружить изменения в полях ввода, чтобы предупредить пользователей о несохраненных изменениях в форме. Я использую событие onchange для полей, чтобы записать, что форма изменилась. Затем я использую событие окна beforeunload, чтобы не дать пользователю покинуть страницу, если требуется сохранение. Проблема в том, что кнопка «Назад» во всех основных браузерах позволяет активному вводу инициировать событие изменения. Как мне обойти эту проблему?
Ниже приведены тестовые файлы, которые я использую. Я хочу, чтобы оповещение сработало, когда пользователь редактирует поле ввода, а затем сразу же щелкает назад. Редактирование текста, а затем нажатие на тело вызовет изменение, но этого недостаточно.
starteditor.html
<!doctype html>
<html>
<head>
</head>
<body>
<a href="editor.html">Click me</a>
</body>
</html>
editor.html
<!doctype html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("form").delegate("input", "change", function () { alert("I changed") });
});
</script>
</head>
<body>
Edit text then click the browsers back button.
<form>
<input type="text" />
</form>
</body>
</html>