2016-11-18 32 views
0

フォームがURLに送信されると、ブラウザは履歴にページを再度登録します。私はPage Xにいて、Page Yに行きフォームを提出するとします。今、私はブラウザのボタンを押すと、同じページを再びロードします。 Page Xに行くのではなく、ページYにする代わりに、このフォームを送信すると、ブラウザ履歴にページYが再度登録されます。 そして、私はすべてのブラウザとデバイスをサポートしています。 ブラウザ履歴の最後のエントリを削除するか、またはブラウザが履歴にページを再度登録しないようにするにはどうすればよいですか?ブラウザ履歴の最後の項目を削除します

+0

完了したら、ページXにブラウザを送信して、人々が戻るボタンを押す必要がないようにできませんでしたか? –

+0

@tylermackenzieいいえ、フォーム提出以外の機能がいくつかあるので、ユーザーは同じページにとどまるべきです。しかし、history.back()を実行しても、それはまだ履歴に残っています。ユーザーがフォワードボタンをクリックすると、再びボタンXをクリックしてページXに行きます。 –

答えて

0

ユーザー履歴を編集することはできません。その点で最善のことは、現在のページの戻るボタンがlocation.replace(pageX)で指し示す場所が変更され、戻るボタンを押すと同じページが読み込まれずにページXに行くということです。しかし、そのページの履歴が再び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()を使用すると、ユーザ戻るの履歴は、あなたが望むとおりに正確に動作します。一度戻ると、ページXに移動します。 フォワード奇妙な歴史があるだけです。しかし、前進ボタンが押されている可能性は非常に低いです。ユーザーはページに移動しただけで、なぜ彼らは前進しますか?そして、彼らがどこか他の場所に移動するとすぐに、その奇妙なフォワード履歴が上書きされます。

関連する問題