Звучит так, как будто тебя поразило запоминание значения поля формы.
Когда вы используете назад и вперед (но когда bfcache не используется в браузерах, у которых он есть), или в некоторых браузерах, когда вы нажимаете перезагрузить, браузер пытается сохранить значения каждого поля формы, которые присутствовали, когда Страница была в последний раз выгружена. Это функция, предназначенная для того, чтобы пользователь мог перемещаться по формам и обновлять их, не теряя при этом все данные, которые он в них вводил.
Таким образом, вы не можете полагаться на то, что значение поля формы при загрузке страницы будет таким же, каким оно должно быть из источника HTML. Если у вас есть состояние DOM, которое зависит от значения поля формы (например, формы, где некоторые поля скрыты или отключены в зависимости от значения другого поля), вы должны обновить это состояние во время загрузки страницы, чтобы отразить значения полей, которые браузер молча поставил на место (никаких событий onchange
не происходит). И вообще не использует скрытые входы для хранения переменных сценариев .
Точное поведение зависит от браузера. Например, некоторые браузеры сохраняют значения скрытых полей, а некоторые нет. Mozilla и WebKit вводят новые значения мгновенно, когда поля анализируются в DOM, в то время как IE делает это только на window.onload
... и Opera, что хуже, делает это сразу после window.onload
, так что вы можете поймать его установка 0-тайм-аута для обновления состояния после onload
. Это неприятный беспорядок.