Почему Firefox + Мой код уничтожает обновление Firefox - PullRequest
2 голосов
/ 31 мая 2010

Я так зол сейчас. Я потерял часы, и я не знаю, почему это происходит. Это наполовину напыщенная речь, но я постараюсь сделать ее короткой

  1. Мой код не будет работать, даже после обновления он был сломан
  2. Я исправил свой код или так, я думал, потому что он перестает работать без меня что-либо изменить (вы могли бы подумать, что я представляю это ...)
  3. Я почему-то решил создать новое окно или вкладку, я запускаю свой код и проверяю, работает ли он.
  4. Я пишу больше кода и вижу, что все снова сломано
  5. Я пишу тест в новом окне и вижу, что мой код работает
  6. Я вижу, что мой код не работает, и firebug НЕ ПОМОГАЕТ
  7. Я замечаю, что когда я создаю новую вкладку, все работает
  8. Я понимаю, что обновление не работает, и я ДОЛЖЕН создать новую вкладку, чтобы мой код работал.

Тогда я сразу понял, в чем проблема. Я изменяю отображение: нет текстового поля, но я установил значения неправильно. Я не могу видеть это, потому что это скрыто. Некоторые из вас могут сказать, что это моя вина, потому что при обновлении все данные могут быть в кеше. Но вот кикер. Я использовал данные POST. Я писал между обновлениями каждый раз.

Какой смысл использовать POST, когда одни и те же данные кэшируются и используются в любом случае? Если у поисковой системы нет шансов перейти по ссылке block user get, почему я должен беспокоиться о том, чтобы что-то публиковать, если безопасность или повторные действия не являются проблемой? POST, похоже, ничего не делал.

1 Ответ

5 голосов
/ 31 мая 2010

Звучит так, как будто тебя поразило запоминание значения поля формы.

Когда вы используете назад и вперед (но когда bfcache не используется в браузерах, у которых он есть), или в некоторых браузерах, когда вы нажимаете перезагрузить, браузер пытается сохранить значения каждого поля формы, которые присутствовали, когда Страница была в последний раз выгружена. Это функция, предназначенная для того, чтобы пользователь мог перемещаться по формам и обновлять их, не теряя при этом все данные, которые он в них вводил.

Таким образом, вы не можете полагаться на то, что значение поля формы при загрузке страницы будет таким же, каким оно должно быть из источника HTML. Если у вас есть состояние DOM, которое зависит от значения поля формы (например, формы, где некоторые поля скрыты или отключены в зависимости от значения другого поля), вы должны обновить это состояние во время загрузки страницы, чтобы отразить значения полей, которые браузер молча поставил на место (никаких событий onchange не происходит). И вообще не использует скрытые входы для хранения переменных сценариев .

Точное поведение зависит от браузера. Например, некоторые браузеры сохраняют значения скрытых полей, а некоторые нет. Mozilla и WebKit вводят новые значения мгновенно, когда поля анализируются в DOM, в то время как IE делает это только на window.onload ... и Opera, что хуже, делает это сразу после window.onload, так что вы можете поймать его установка 0-тайм-аута для обновления состояния после onload. Это неприятный беспорядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...