2015-10-14 59 views
1

比方说,我给这个代码:IE没有的rember上后退按钮隐藏字段值

<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中显示默认值。 如何解决这个问题,而不使用sessionstorage?

Fiddle

+1

你在这个页面上有任何杂注缓存元标签或标题?你在使用IIS吗? –

+1

没有编译标签,是的,但看到小提琴为例,铬和ff中的值是坚持,而在IE不是 – dot404

回答

0

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

有些人可能会在修改之前缓存实际的javascript,因此也会加载旧的javascript和旧的值。

最好是在某种处理这种坚持层

见: Ajax, back button and DOM updates

+1

我不重新加载页面,我正在移动到一个新的页面,并返回返回键。在chrome和ff中,值是持久的,而在IE中不是 – dot404

+1

他不是在询问整个页面的重新加载。 –

+2

@UncleRico你知道后退按钮的作用吗?我的意思是技术上介于不同的浏览器之间......这不是一种相信价值观会持续下去的好方法......它不是标准的,不可预测的。它也取决于功能集,即ie8,即10个后退按钮在技术上的表现会非常不同。 – Seabizkit

2

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

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

0

请尽量设定值:

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

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