Firefox 为什么在重新加载页面时复选框保持选中状态?

Firefox 为什么在重新加载页面时复选框保持选中状态?,firefox,Firefox,我正在重新加载包含以下代码的网页: <label for="showimage">Show Image</label> <input id="showimage" name="showimage" type="checkbox" value="1" /> 显示图像 即使每次重新加载页面时发送到浏览器的HTML都是相同的,但在执行重新加载时,复选框始终采用选中值。换句话说,如果用户选中复选框并重新加载,复选框仍处于选中状态 这里有缓存吗 编辑:我尝试了下面G

我正在重新加载包含以下代码的网页:

<label for="showimage">Show Image</label>
<input id="showimage" name="showimage" type="checkbox" value="1" />
显示图像
即使每次重新加载页面时发送到浏览器的HTML都是相同的,但在执行重新加载时,复选框始终采用选中值。换句话说,如果用户选中复选框并重新加载,复选框仍处于选中状态

这里有缓存吗

编辑:我尝试了下面Gordon Bell的解决方案,发现即使删除了value=“1”,这种情况仍然存在。还有什么我可能遗漏的吗

<label for="showimage">Show Image</label> 
<input id="showimage" name="showimage" type="checkbox" /> 
显示图像

是的,我相信它是缓存。例如,我在Firefox上看到了这种行为(而不是Safari,因为它的价值:))

您可以使用CTRL-SHIFT-R重新加载页面并绕过缓存(在Firefox上),您将看到检查值没有携带(但是,正常的CTRL-R会从缓存中获取信息)

编辑:我可以在Firefox上禁用此服务器端,设置缓存控制头:

Cache-Control: no-store

这似乎禁用了Firefox的“记住表单值”功能是的,我相信它是缓存。例如,我在Firefox上看到了这种行为(而不是Safari,因为它的价值:))

您可以使用CTRL-SHIFT-R重新加载页面并绕过缓存(在Firefox上),您将看到检查值没有携带(但是,正常的CTRL-R会从缓存中获取信息)

编辑:我可以在Firefox上禁用此服务器端,设置缓存控制头:

Cache-Control: no-store

这似乎禁用了Firefox的“记住表单值”功能,这是Firefox的一个不错的功能:如果您键入了一些内容,但重新加载了页面,文本仍保留在文本区域中。识别您选择的其他设置

唉,它在SO(可能由JS重置)和IE等更愚蠢的浏览器中不起作用


这就提出了一个解决方案:如果你真的需要这样做,用JS重置表单。form.reset()可以完成这项工作(就像重置输入按钮一样)。

这是Firefox的一个很好的功能:如果您键入了一些内容,但重新加载了页面,文本将保留在文本区域中。识别您选择的其他设置

唉,它在SO(可能由JS重置)和IE等更愚蠢的浏览器中不起作用


这就提出了一个解决方案:如果你真的需要这样做,用JS重置表单。form.reset()可能会执行此操作(类似于重置输入按钮)。

或者在地址栏上按enter键代替f5:)

或者在地址栏上按enter键代替f5:)

这可能是由于浏览器缓存的缘故-对于不经常更改的静态网站非常有用,对于动态web应用程序非常不利。
尝试使用页面标题部分的这两个元标记。第二个元标记适用于不识别“无缓存”元标记的旧浏览器(IE5),虽然不同,但会产生相同的结果:每个请求都会发送到服务器



这可能是由于浏览器缓存——对于不经常更改的静态网站非常有用,对于动态web应用程序非常糟糕。
尝试使用页面标题部分的这两个元标记。第二个元标记适用于不识别“无缓存”元标记的旧浏览器(IE5),虽然不同,但会产生相同的结果:每个请求都会发送到服务器


autocomplete=“off”
添加到页面上的表单元素中。缺点是这不是有效的XHTML,但它在没有任何复杂javascript的情况下解决了问题。

autocomplete=“off”
添加到页面上的表单元素中。缺点是这不是有效的XHTML,但它在没有任何复杂的javascript的情况下解决了这个问题。

set autocomplete=“off”with js也可以正常工作

例如,使用jquery:

$(":checkbox").attr("autocomplete", "off");
使用js设置autocomplete=“off”也可以正常工作

例如,使用jquery:

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

$(“#showimage”).prop(“选中”,false)

$(“#showimage”).prop(“选中”,假)

解决这个问题的公众想法

生成表单和重置按钮

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

$(reset).trigger("click");//to clear the cache and input 
$(checkbox).trigger("click");//to mark checkbox

$(重置)。触发器(“单击”)//清除缓存和输入
$(复选框)。触发器(“单击”)//标记复选框

解决这一问题的公众想法

生成表单和重置按钮

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

$(reset).trigger("click");//to clear the cache and input 
$(checkbox).trigger("click");//to mark checkbox

$(重置)。触发器(“单击”)//清除缓存和输入
$(复选框)。触发器(“单击”)//标记复选框

这是一个老问题,但对于firefox来说仍然是一个活跃的问题。我尝试过的回答中没有一个解决了这个问题,但对我来说,解决这个问题的方法很简单:

    document.getElementById('formId').reset();

这只是在每次加载页面时将表单重置为默认选项。这并不理想,因为你失去了颗粒控制,但这是唯一能帮我解决这个问题的方法

这是一个老问题,但对于firefox来说仍然是一个活跃的问题。我尝试过的回答中没有一个解决了这个问题,但对我来说,解决这个问题的方法很简单:

    document.getElementById('formId').reset();

这只是在每次加载页面时将表单重置为默认选项。这并不理想,因为你失去了颗粒控制,但这是唯一能帮我解决这个问题的方法

是的,CTRL-SHIFT-R会使复选框复位。有没有办法防止缓存这些内容?我不这么认为(至少从服务器端不这样认为)。firefox在缓存东西方面非常积极。我只能让它在这样的情况下从客户端可靠地停止缓存它从缓存中获取值,因此它是缓存。除非我误解了你的意思。Firefox积极的缓存是一个主要的缺陷,在开发时总是让我注意到它。我以前没有尝试过缓存控制头,但如果它有效的话,stackoverflow就完全证明了我在这里花费的时间是合理的。这些值并不像Firefox下载的文件存储那样来自“缓存”。例如:如果您导航到别处,然后遵循相同的URL,页面将被缓存,但值不会被缓存。通过破坏缓存,您可以强制硬重新加载,但这也禁用了该功能,这只是巧合