【问题标题】:IE does not rember hidden field value on back buttonIE 不记得后退按钮上的隐藏字段值
【发布时间】:2016-12-12 23:12:12
【问题描述】:

假设我给出了这段代码:

<input type="hidden" id="field" name="field" value="1">      
<button id="change">Change</button>

还有这个 javascript:

alert($("#field").val());
$("#change").on("click", function(){
    var newValue = parseInt($("#field").val()) + 1;
   $("#field").val(newValue);
   alert($("#field").val());
});

如果我更改了值,请转到不同的页面,然后使用后退按钮,在 chrome 和 firefox 中显示最新值,而在 IE 中显示默认值。 如何在不使用会话存储的情况下解决这个问题?

Fiddle

【问题讨论】:

  • 此页面上是否有任何编译指示缓存元标记或标题?你在使用 IIS 吗?
  • 没有杂注标签,是的,但是以小提琴为例,chrome和ff中的值是持久的,而在IE中则不是

标签: javascript jquery html internet-explorer


【解决方案1】:

这不是标准做法,可能是 Firefox 和 Chrome 正在缓存这些值。但你不应该依赖它。

如果使用 Ctrl + F5 刷新页面,将不起作用。

【讨论】:

    【解决方案2】:

    您不能将值保存在页面本身...,任何完整的页面重新加载都会清除您更改的任何值...所以除非您将状态保存到某种持久层...取决于bowser 后退按钮的行为方式会有所不同……一些没有缓存的旧版浏览器会重新加载整个页面。

    有些人可能会在修改之前缓存实际的 javascript,因此加载旧的 javascript 并使用旧值形成缓存。

    最好在某种持久层中处理这个问题

    见: Ajax, back button and DOM updates

    【讨论】:

    • 我没有重新加载页面,我正在移动到一个新页面并使用返回按钮返回。在 chrome 和 ff 中,该值是持久的,而在 IE 中则不是
    • 他不是在询问是否要重新加载整页。
    • @UncleRico 你知道后退按钮的作用吗?我的意思是在不同浏览器之间的技术......这不是一个相信价值观会被持久化的好方法......它不是标准的和不可预测的。它还取决于功能集,即 ie8 与 ie 10 后退按钮在技术上的行为会非常不同。
    • @Seabizkit 大多数浏览器中的后退按钮不执行 SHIFT+F5 刷新。他们从缓存中加载现有页面。 IE 是独角兽,不同的版本号做不同的事情。
    • @Seabizkit 我同意尝试依靠这样的东西来保留价值是一种不好的做法。但不幸的是,让 IE 的行为更像 Chrome 和 Firefox,在过去十年左右的时间里一直是 Web 开发人员的角色。
    【解决方案3】:

    请尝试设置值:

    $("#field").attr("value", newValue);
    

    不要使用 .val() 方法。我有一个类似的问题,我用它解决了,因为 IE 没有用 .val() 刷新隐藏值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      相关资源
      最近更新 更多