Intereting Posts
Как получить значение ввода в нескольких строках в HTML Самый семантический способ создания этого контейнера Являются ли динамически вставленные tags предназначенными для работы? Индикатор загрузки остается в Firefox после завершения загрузки iframe Тип ввода изменения Javascript динамически не работает на IE8 Есть ли .NET-эквивалент Perl LWP / WWW :: Mechanize? Загрузите файл с помощью метода ASP.NET Web API с помощью метода AngularJS Wrap link вокруг как использовать обратный прокси, чтобы обойти X-Frame-Options: SAMEORIGIN для iframe цикл нескольких массивов одновременно с ng-repeat Почему я не должен использовать фреймы HTML? background-image на divs не отображается; вместо этого divs рушится Как отобразить примеры кода на веб-страницах с использованием стильного синтаксиса Как переполнение стека? Удалить круглую границу по умолчанию элемента в браузере Mac OS: Chrome Получите оригинальный (чувствительный к регистру) HTML-код с JS / jQuery

Как форма SO запоминает предыдущие входные значения?

Я заметил, что часть Title или Body запоминается, если я вернусь на страницу Ask Question , нажав кнопку « Назад» моего браузера.

Эта функция доступна во всех проверенных мной браузерах, но не существует для форм в моих собственных проектах.

Как я могу подойти к этому эффекту?

ОБНОВИТЬ

У меня пока еще нет подсказки, но угадайте, что какой-то кеш клиента включен заголовками http или javascript?

Solutions Collecting From Web of "Как форма SO запоминает предыдущие входные значения?"

Это связано с кэшированием свойств вашей страницы.

1) Если браузеру разрешено кэшировать вашу страницу, он также будет помнить поля формы.

2) Если не разрешено кэшировать страницу, она забудет все.

Обычно динамически сгенерированные страницы попадают в категорию 2, поэтому вы не видите кеширование. Это действительно определяется заголовками HTTP (особенно Cache-Control и Last-Modified или с использованием E-тегов). Для объяснения того, как ваш браузер определяет кеширование (нетривиальное!), См., Например:

http://www.webscalingblog.com/performance/caching-http-headers-last-modified-and-etag.html

Но проще всего разместить форму на статической странице HTML, тогда ваш веб-сервер будет обрабатывать все.

Вам нужно найти механизм для установки параметров Cache-Control на страницах, которые вы обслуживаете.

Вы не указываете, как вы обслуживаете веб-страницы. Но вот пример страницы ASP, которая заставляет содержимое формы исчезать при возврате на страницу с помощью кнопки «Назад» (это поведение, которое вы сейчас испытываете):

 < % Response.CacheControl = "no-cache" %> < % Response.AddHeader "Pragma", "no-cache" %> < % Response.Expires = -1 %>   Test page   Type some text into this box, click SO followed by the BACK button:  SO 

When you get back the text you typed will be gone.

Обратите внимание на верхние 3 строки, сделайте пару незначительных изменений …

 < % Response.CacheControl = "private" %>   Test page   Type some text into this box, click SO followed by the BACK button:  SO 

When you get back the text you typed will still be there

Теперь содержимое входного поля сохраняется. Это поведение, которое вы пытаетесь достичь. Могут быть дополнительные параметры, которые необходимо установить слишком в зависимости от ваших конкретных потребностей и настроек по умолчанию, применяемых вашим сервером.

Дополнительные сведения о Cache-Control доступны по адресу:

Управление кешем в ASP . Как и в большинстве случаев Microsoft, он обсуждает только IE.

Это руководство по кэшированию обеспечивает хорошее введение с примером кода для нескольких разных веб-серверов, включая PHP.

w3.org – это ссылка, которую вам действительно нужно изучить, в частности раздел 14.9 «Cache-Control».

Ключ к поиску поведения, который вы ищете, – это обслуживание страниц с правильной параметризацией управления кешем.

В то время как я не могу сильно притворяться, заголовки http на странице «Задайте вопрос» выглядят следующим образом:

 HTTP/1.1 200 OK Cache-Control: private Content-Type: text/html; charset=utf-8 Content-Encoding: gzip Vary: Accept-Encoding Server: Microsoft-IIS/7.5 Set-Cookie: [EDITED AWAY} Date: Mon, 03 May 2010 16:04:44 GMT Content-Length: 4800 

Я бы сравнил это с вашими собственными страницами / формами, особенно с любыми заголовками, связанными с кешированием и истечением срока действия.

Нет волшебства. Просто попробуйте следующий HTML:

 < ?xml version="1.0"?> < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">    Test    Google   

Откройте его в своем браузере, введите текст, нажмите ссылку, а затем кнопку «Назад», и он запомнит значение. Протестировано и работает на IE8, FireFox 3.6, Chrome 4.