为什么Firefox +我的代码会破坏FireFox刷新

2 javascript ajax firefox post

我现在很生气.我失去了几个小时,我不知道为什么会这样.这是一个半咆哮,但我会尽量保持简短

  1. 即使刷新后它的代码被破坏,我的代码也行不通
  2. 我修改了我的代码,所以我想,因为它在没有改变任何东西的情况下停止工作(你会认为我想象这个......)
  3. 我不知何故决定创建一个新的窗口或选项卡,我运行我的代码并验证它的工作原理.
  4. 我写了更多的代码,看到一切都被打破了
  5. 我在一个新窗口中编写测试,看看我的代码是否正常工作
  6. 我看到我的代码无法正常工作,而且firebug无法提供帮助
  7. 我注意到当我创建一个新标签时,一切正常
  8. 我意识到刷新不起作用,我必须为我的代码创建一个新标签.

然后我立即知道问题是什么.我修改了一个display:none textbox,但是我设置的值不正确.我看不到它,因为它是隐藏的.现在有些人可能会说我的错,因为在刷新时所有数据都可能是缓存.但这里是踢球者.我正在使用POST数据.我每次都在刷新之间发布.

当缓存相同的数据并使用时,使用POST是什么意思?如果搜索引擎没有机会跟随block user获取链接,那么当安全性或重复性操作不成问题时,为什么我要打扰发帖?POST似乎没有做任何事情.

bob*_*nce 5

听起来你被形式字段值记住了.

当您使用后退和前进时(但是当bfcache没有在使用它的浏览器中使用时),或者在某些浏览器中使用重新加载时,浏览器会尝试保留页面最后一个时存在的每个表单字段的值卸载.这是一个功能,旨在允许用户导航和刷新表单,而不会丢失他们费力输入的所有数据.

因此,您不能依赖于页面加载时表单字段的值,因为它应该来自HTML源.如果您的DOM状态取决于表单字段的值(例如,根据另一个字段的值隐藏或禁用某些字段的表单),则必须在页面加载时更新该状态以反映浏览器静默放置到的字段值(不onchange发生任何事件).并且不要使用隐藏的输入来存储脚本变量.

确切的行为因浏览器而异.例如,某些浏览器会保留隐藏字段的值,而某些浏览器则不会.当字段被解析到DOM中时,Mozilla和WebKit立即将新值放入其中,而IE仅在window.onload... 上执行...而且,加剧了Opera,只是在它之后window.onload,所以你只能通过设置0超时来捕获它之后更新状态onload.这是一个讨厌的混乱.