Чем именно Firefox отличается от обработки нескольких (дублирующих) постов? - PullRequest
2 голосов
/ 22 апреля 2011

Я столкнулся с ошибкой в ​​Firefox, связанной с некоторой несинхронизацией информации в моей форме при использовании кнопки перезагрузки после изменения некоторых данных формы (через AJAX).

В IE (7) при обновлении всегда повторяется отправка первоначально отправленных данных. Итак, если я загружаю форму, которая затем изменяется через JS / AJAX, и обновляю, я вижу то, что видел при первой загрузке.

В Firefox (4) я склонен (по крайней мере, в этом случае) видеть более новые данные. Однако из-за того, что я не обновил некоторые элементы формы, форма, похоже, повторно отправляется с частично неверными данными, что в этом случае может привести к серьезной путанице.

Мой вопрос: в чем именно заключается разница между тем, как Firefox и IE обрабатывают повторную публикацию? Это где-нибудь задокументировано? Является ли в любом случае более стандартным? А как насчет других браузеров?

Редактировать : Возможно, стоит отметить, что Firefox, похоже, также рендерит только определенные элементы (в моем случае класс метки изменяется, но не отключается состояние входа). Есть ли в Firefox специальные правила для обновления DOM при обновлении и повторной публикации?

Я проверил возврат из (пере) POST в FF и подтвердил, что он ведет себя необычно. В источнике возврата я получаю этот бит:

<label id="delSheetContainer"
      title="Estimate Sheets with Schedule Activities in the past may not be deleted."
      class="">
   <input id="delSheet" name="delSheet"
      type="checkbox"
      tabindex="3"
      value="false"
      //Inserted note: this is where the disabled value would have been
      onclick="this.value=(this.value && 1); bSave=true; setBtn(this.checked);"
   />Delete Sheet
</label>

Но в браузере (и Firebug) я вижу все еще отключенный флажок. Ярлык, однако, был должным образом обновлен. Кто-нибудь может подробно описать это поведение? (ссылки приветствуются!)

Редактировать : Как объяснил Борис, Firefox поддерживает «состояние формы» через обновления. Моя проблема на самом деле вызвана этим фактом; сервер возвращает нужные данные, но Firefox все равно поддерживает состояние формы.

1 Ответ

1 голос
/ 22 апреля 2011

Трудно сказать наверняка, какой эффект вы видите здесь, основываясь на описании, но когда вы выполняете перезагрузку (не принудительную перезагрузку), Firefox будет сохранять значения измененных входных данных формы при любом значении, которое они имели перед перезагрузкой.

Так что если у вас есть страница с такой разметкой:

<input name="x">

, и пользователь вводит "foo" в текстовое поле, а затем перезагружает, вводпосле перезагрузки по-прежнему будет содержаться строка «foo».

Это относится к скрытым вводам, значения которых также изменяются с помощью JavaScript, что вполне может объяснить поведение, которое вы наблюдаете.

Существуетнет стандартного поведения перезагрузки покрытия, на самом деле.

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