一種方式的數量。它通常會將表單提交給自己,您的腳本會攔截提交操作並替換歷史記錄中的當前項目。爲了做到這一點,就需要重建查詢字符串值:
myForm.onsubmit = function() {
var url = this.action, // The URL where the form is submitted
els = this.elements, // A list of all the input elements
qs = "?", // The query string we're constructing
enc = function (s) { // Function for encoding
return encodeURIComponent(s).replace(/%20/g, "+");
};
for (var i=0, max = els.length; i < max; i++) {
if (els[i].disabled || !els[i].name)
continue;
qs += enc(els[i].name) + "=" + enc(els[i].value) + "&";
}
// chop off the final ampersand
qs = qs.slice(0, -1);
// Replace the current entry in the history
window.location.replace(action + qs);
// Cancel the default form submission
return false;
}
這可能需要一點點的改進,以滿足您的需求,但你得到的總體思路。現在瀏覽器的後退按鈕和你自己的後退按鈕應該返回到page1。但是,這種方法不適用於POST提交。
什麼阻止他們點擊瀏覽器中的後退按鈕? – zzzzBov 2010-12-14 17:50:56
@zzzzBov完全同意,只是希望我的項目經理會認爲相同的 – c14kaa 2010-12-14 18:03:09
理解。我假設你正在發送'page2?something = else'部分的表單數據。如果您要將數據發佈到腳本中,則應該發送unique_id以進行檢查以防止意外的雙重提交。 – zzzzBov 2010-12-14 18:07:50