我现在很生气。我失去了几个小时,我不知道为什么会这样。这是一个半咆哮,但我会尽量保持简短
然后我立即知道问题是什么。我修改了一个display:none textbox,但是我设置的值不正确。我看不到它,因为它是隐藏的。现在有些人可能会说我的错,因为在刷新时所有数据都可能是缓存。但这里是踢球者。我正在使用POST数据。我每次都在刷新之间发布。
当缓存相同数据并使用时,使用POST是什么意思?如果搜索引擎没有机会关注block user
获取链接,那么当安全性或重复性操作不成问题时,为什么我要打扰发帖? POST似乎没有做任何事情。
答案 0 :(得分:5)
听起来像是被表格字段值记住了。
当你使用后退和前进时(但是当bfcache没有在拥有它的浏览器中使用时),或者在某些浏览器中,当你点击重新加载时,浏览器会尝试保留每个表单字段的值。页面上次卸载。这是一个功能,旨在允许用户导航和刷新表单,而不会丢失他们辛苦输入的所有数据。
因此,您不能依赖于页面加载时表单字段的值,因为它应该来自HTML源。如果您的DOM状态取决于表单字段的值(例如,根据另一个字段的值隐藏或禁用某些字段的表单),则必须在页面加载时更新该状态以反映浏览器静默放置到的字段值(不会发生onchange
个事件)。并且根本不使用隐藏输入来存储脚本变量。
确切的行为因浏览器而异。例如,某些浏览器会保留隐藏字段的值,而某些浏览器则不会。当字段被解析到DOM中时,Mozilla和WebKit立即将新值放入其中,而IE仅在window.onload
上执行...而且Opera更加严重,仅在window.onload
之后执行,因此您可以只能通过在onload
之后设置0超时来更新状态来捕获它。这是一个令人讨厌的混乱。