Запрет Firefox от восстановления состояния предыдущего пользовательского ввода после обновления - PullRequest
3 голосов
/ 15 марта 2012

У меня есть страница с несколькими флажками, которая должна представлять состояние в базе данных.Флажки управляются AJAX, поэтому при их установке отправляется запрос на обновление состояния в базе данных.Если их представление устарело, то для соответствующих / связанных флажков обновляются представления, и пользователь уведомляется и должен повторить попытку.Когда я обновляю, я хотел бы, чтобы флажки представляли то, что фактически возвращается в HTML, сгенерированном из данных в базе данных, , а не некоторые произвольные предыдущие взаимодействия пользователя с элементами ввода.

Каксделать так, чтобы Firefox не обновлял эти флажки, с которыми я взаимодействовал, чтобы они были идентичны состоянию во вновь полученном HTML?

Проблема сбивает с толку, потому что:

  1. Когда я обновляю страницу в Firefox и обновленный атрибут для флажка обновляется во вновь полученном HTML, Firefox обновит представление, как я и ожидал.

  2. Однако, если я буду взаимодействовать с флажком, а затем обновлять, флажок ТА не будет обновляться для вновь полученного HTML.

т.е.Неважно, если checked="checked" или проверенный атрибут не существует, Firerfox сохраняет его таким, пока я не выполню обновление смещения.

Я даже добавил window.onunload = function(){};, потому что я думал, что это можетиз-за bfcache, но это не так.

Пробовал со следующими заголовками и все еще восстанавливал состояние.

HTTP/1.1 200 OK
Date: Thu, 15 Mar 2012 21:19:02 GMT
Server: Apache/2.2.20 (Ubuntu)
Expires: 0
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1

Пробовал зацикливание на элементах, и, несмотря на то, что проверенный атрибут несуществующий в исходном html, JavaScript считал проверенный атрибут «проверенным», поэтому невозможно восстановить значение из полученного источника после того, как Firefox восстановит значение из ранее введенного ввода.

Обратноетакже верно ... источник говорит checked="checked" и JavaScript при загрузке считает проверенным undefined.

Источник для оповещения о состоянии первого флажка.

window.onload = function() {   
    $('input[type="checkbox"]').each(function() {
        alert($(this).attr('checked'));
        return false
    });
}

1 Ответ

1 голос
/ 16 марта 2012

document.formname.reset() сработало, что похоже на восстановление из того, что было изначально в HTML. Это единственный метод, который я пробовал, который работает ...

Спасибо Деннису за размещение этого ответа на аналогичный вопрос. Firefox: как перезагрузить форму * без * кэширования ввода пользователя?

Единственная проблема с этим решением - мне не нужна форма, я не использую форму, не отправляю форму и т. Д. Я использую эти флажки, чтобы создать пользовательский интерфейс, который кажется вполне допустимым. случай, но для того, чтобы это работало, мне нужно было связать все мои входные данные с формой.

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