Chrome不会缓存隐藏的表单字段值,以便在浏览器历史记录中使用

And*_*age 15 google-chrome back-button hidden-fields browser-history

我有一个ASP.Net Web表单,其中包含文本框字段和隐藏字段.使用客户端JavaScript动态修改隐藏字段值.发布表单,检查值并重定向到另一个页面都按预期工作.

但是,当我使用浏览器后退按钮显示上一页时,我希望看到所有表单字段仍然填充了已发布的值.

在IE和Firefox中,文本和隐藏输入字段都是这种情况.

在Chrome中,这仅适用于文本字段.隐藏字段的值丢失.

在导航浏览器历史记录时,Chrome是否真的会重新填充动态设置隐藏的表单字段值?

我已经将一个小样本放在一起以证明问题,如果需要可以提供.我想先问问题,看看这是否是众所周知的行为,我必须接受.

小智 17

这个问题可以通过一个小技巧来解决.

问题是带有Type = hidden的表单字段,Chrome浏览器无法正确处理动态设置值.

因此,解决方案是将字段类型更改为文本,并使用其他方法隐藏可见文本框.这可以通过包含所有意图被DEV标签对隐藏的值的文本框并将样式指定为display来实现:none

然后在页面上,您将看不到带有隐藏值的文本框,它将与浏览器的JavaScript一起正常工作.

之前

<input type=hidden name=item_no value=00001>
Run Code Online (Sandbox Code Playgroud)

<div style="display: none">
    <input type=text name=item_no value=00001>
</div>
Run Code Online (Sandbox Code Playgroud)


Ath*_*ari 5

你不应该依赖这种行为。它在浏览器之间是不同的,甚至在浏览器版本之间也是如此。任何标准中都没有描述这种行为。如果您希望您的字段具有特定值,您可以使用 cookie,或者在页面加载时始终向服务器发出请求,或者使用更现代的方法,如本地存储(虽然它没有得到广泛支持)。

  • 这确实是仅 Chrome 的行为,我觉得这很奇怪。我对此做了一些研究,您可以在以下位置找到:http://wiki.orbeon.com/forms/doc/contributor-guide/browser#TOC-Restoring-form-fields-on-back (2认同)