2015-10-14 84 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()隱藏的值。