2016-11-18 177 views
0

將表單提交到URL後,瀏覽器將該頁面再次註冊到歷史記錄中。假設,我在頁面X中,然後轉到頁面Y並提交表單。現在,當我按下瀏覽器的按鈕時,它再次加載相同的頁面,即。因此,該表單提交使瀏覽器再次在瀏覽器歷史記錄中註冊頁面Y. 而且,我支持所有的瀏覽器和設備。 如何刪除瀏覽器歷史記錄中的最後一項或停止瀏覽器在歷史記錄中再次註冊頁面?刪除瀏覽器歷史記錄中的最後一項

+0

難道你不能只是在瀏覽器完成後纔將瀏覽器發送給Page X,這樣人們就不需要按下後退按鈕了? –

+0

@tylermackenzie不,用戶應該保持在同一頁面,因爲它具有除表單提交之外的其他功能。但即使我做了一個history.back(),它仍然在歷史記錄中,如果用戶再次單擊向前按鈕,他必須點擊後退按鈕兩次才能進入第X頁,如果他願意的話。 –

回答

0

您無法編輯用戶歷史記錄。在這方面,您可以做的最好的辦法是更改當前頁面的後退按鈕指向location.replace(pageX)的位置,以便按下後退按鈕不會重新加載相同的頁面,而是轉到pageX。但如果用戶再次按下,則會出現問題,因爲該頁面的歷史記錄將再次爲pageY。

您最好的選擇是保持表單提交刷新頁面首先。這樣歷史將是正確的。這可以通過發送帶有AJAX的表單而不是傳統的方法來完成。這裏是一個使用jQuery來阻止傳統表單提交然後發出AJAX請求的例子。

$(document).ready(function() { 
    $('#myform').on('submit', function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      url : $(this).attr('action'), 
      data: $(this).serialize(), 
      success: function (data) { 
       // if you want it to do something when it's done, put it here 
      }, 
      error: alert("broke"), 
      type: "GET" 
     }); 
    }); 
}); 

更新

第三個很好的選擇是隻是做你在您的評論說。如果您在表單提交後使用history.back(),那麼用戶返回歷史記錄將按您的要求工作。按回一次將它們帶到pageX。它只會是變得奇怪的轉發歷史。但是按下前進按鈕的可能性非常小。用戶只需導航到頁面,他們爲什麼會向前推?然後,只要他們在別的地方導航,怪異的前鋒歷史就會被覆蓋。