2008-11-18 2 views
58

Я перезагрузки веб-страницу, которая имеет следующий код:Почему флажок установлен при перезагрузке страницы?

<label for="showimage">Show Image</label> 
<input id="showimage" name="showimage" type="checkbox" value="1" /> 

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

Есть ли какое-то кеширование здесь?

Редактировать: Я попробовал решение Гордона Белла ниже и обнаружил, что это все еще происходит даже после удаления значения = "1". Что-нибудь еще, что я могу пропустить?

<label for="showimage">Show Image</label> 
<input id="showimage" name="showimage" type="checkbox" /> 

ответ

28

Да, я считаю, что это кеширование. Я вижу это поведение в Firefox, например (не Safari, для чего это стоит :)).

вы можете перезагрузить страницу и обойти кэш (на Firefox) с помощью CTRL - SHIFT - R и вы увидите значение проверки не несет (нормальный CTRL - R будет захватывать данные из кэша однако)

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

Cache-Control: no-store 

это, кажется, чтобы отключить «запомнить значения формы» особенность Firefox

+0

Угу, CTRL-SHIFT-R приводит к тому, флажков сбрасывается. Есть ли способ предотвратить кеширование? – Readonly 2008-11-18 19:33:43

+0

Я так не думаю (по крайней мере, не со стороны сервера). firefox действительно агрессивен в кешировании вещей. я только смог заставить его прекратить кеширование надежно в ситуациях, подобных этому с клиентской стороны. – Owen 2008-11-18 19:41:56

+0

Не связано с кэшированием как таковым, просто потому, что жесткая перезагрузка также отключает преднамеренную функцию запоминания содержимого формы. Такое же поведение также влияет на текстовые поля, меню и т. Д. – bobince 2008-11-18 21:11:06

2

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

Увы, это не работает в SO (возможно сбросить JS) и тупее браузеров, как IE ...

которые предполагают решение: если вам действительно нужно сделать, сбросьте форму с JS. form.reset() может выполнять задание (действует как кнопка ввода сброса).

0

или вместо f5 прессы ввести в адресной строке :)

0

Это может быть из-за кэширования браузера - очень полезно для статических веб-сайтов, которые не изменились слишком часто, очень плохо для динамических веб-приложений.
Попробуйте эти два метатега в разделе главы страницы. Второй метатег для старых браузеров (IE5), которые не распознают метатег «no-cache», и хотя разные результаты дают одинаковый результат: каждый запрос отправляется на сервер.

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1"> 
109

Добавить autocomplete="off" в виде элемента на странице. Недостатком является то, что это недопустимый XHTML, но он исправляет проблему без какого-либо свернутого javascript.

29

комплект автозаполнение = "off" с js также хорошо работает.

, например, с помощью JQuery:.

$(":checkbox").attr("autocomplete", "off"); 
0

$ ("# ShowImage") проп ("проверено", ложь);

0

общественности идея, чтобы решить, что

делают вид кнопки сброса &

<form> 
<checkbox> 
<reset> 
</form> 

$(reset).trigger("click");//to clear the cache and input 
$(checkbox).trigger("click");//to mark checkbox 
Смежные вопросы