Javascript 为什么Firefox+;我的代码破坏了FireFox刷新

Javascript 为什么Firefox+;我的代码破坏了FireFox刷新,javascript,ajax,firefox,post,Javascript,Ajax,Firefox,Post,我现在很生气。我浪费了几个小时,我不知道为什么会这样。这是一个半咆哮,但我会尽量保持简短 我的代码无法工作,即使在刷新后它被破坏了 我修正了我的代码,或者我这么认为,因为它停止工作,而我没有改变任何东西(你会认为我在想象这个…) 我不知何故决定创建一个新窗口或选项卡,然后运行代码并验证它是否正常工作 我写了更多的代码,看到所有的东西又坏了 我在一个新窗口中编写测试,并查看代码是否正常工作 我看到我的代码不起作用,firebug也帮不上忙 我注意到,当我创建一个新选项卡时,一切都正常 我意识到刷新

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

  • 我的代码无法工作,即使在刷新后它被破坏了
  • 我修正了我的代码,或者我这么认为,因为它停止工作,而我没有改变任何东西(你会认为我在想象这个…)
  • 我不知何故决定创建一个新窗口或选项卡,然后运行代码并验证它是否正常工作
  • 我写了更多的代码,看到所有的东西又坏了
  • 我在一个新窗口中编写测试,并查看代码是否正常工作
  • 我看到我的代码不起作用,firebug也帮不上忙
  • 我注意到,当我创建一个新选项卡时,一切都正常
  • 我意识到刷新不起作用,我必须为我的代码创建一个新的选项卡
  • 然后我立刻知道问题出在哪里。我修改了“显示:无”文本框,但设置的值不正确。我看不见它,因为它是隐藏的。现在你们中的一些人可能会说这是我的错,因为在刷新时,所有的数据都可能是缓存。但这是踢球者。我使用的是POST数据。我每次都会在刷新之间发布


    当缓存相同的数据并以任何方式使用时,使用POST有什么意义?如果搜索引擎没有机会跟踪
    阻止用户
    获取链接,那么当安全性或重复操作不是问题时,我为什么要费心发布任何内容?POST似乎什么也没做。

    听起来你好像被表单字段值记忆击中了

    当您使用back and forward(但在有bfcache的浏览器中未使用bfcache)时,或在某些浏览器中单击reload时,浏览器会尝试保留页面上次卸载时存在的每个表单字段的值。这是一项允许用户导航和刷新表单的功能,而不会丢失用户费力输入的所有数据

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


    具体行为因浏览器而异。例如,有些浏览器保留隐藏字段的值,有些则不保留。Mozilla和WebKit在将字段解析到DOM中时立即输入新值,而IE仅在
    窗口上进行。onload
    。。。更糟糕的是,Opera只在
    window.onload
    之后执行此操作,因此您只能通过设置0超时来在
    onload
    之后更新状态来捕获它。这真是一团糟。

    Firefox Web Developer工具栏有一个选项,可以让你显示隐藏的元素。可能会有帮助。我也这么想,但唯一困扰我的不是我将值设置为某个错误的值,我应该得到一个异常,而是我在一个POST事件后刷新的事实。我甚至在页面上看到了其他值的更新和新表单的添加。我认为,如果(足够多的)dom更改,值将重置。有太多的事情出了差错,让我的一天真的很痛苦:(