web-dev-qa-db-ja.com

ブラウザの履歴から現在のページを削除する

私は自分のウェブサイトでテキストエディタを構築しています。ワークフローは次のとおりです。

  1. /listで、ユーザーは編集したいエントリをリストから選択し、/edit/[article_id]に移動します。
  2. ユーザーが作業を行い、[送信]をクリックします。
  3. サーバーはThingを処理し、それらを/edit/[article_id]にリダイレクトします。これにより、編集された作業が反映されます。サーバーはまた、編集が成功したことを示すためにページ上のフラッシュメッセージをアクティブにします。

この時点で、ユーザーはおそらく/listに戻り、ブラウザの[戻る]ボタンをクリックします。これにより、送信した回数に応じて、繰り返しエディターに戻されます。

ページのどこかに戻るボタンを配置しようとしましたが、多くのユーザーは単にそれを無視しています。

フラッシュメッセージシステムにも影響を与えるため、AJAXを介して投稿を投稿したくありません。

私がやりたいのは、ユーザーが送信したときに、履歴リストの最後のエントリを、その長さを変更せずに置き換えることです。出来ますか?

8
starleaf1

これを試してください

_window.location.replace(url);
_

replace()を使用した後、現在のページはセッション履歴に保存されません。つまり、ユーザーは[戻る]ボタンを使用してそのページに移動できなくなります。

12
Alfin Paul

Window.close()を使用します:

close();

注:現在のタブが暗示されます。これは同等です:

window.close();

または、別のウィンドウを指定することもできます。

そう:

function close_window() {
  if (confirm("Close Window?")) {
    close();
  }
}

hTMLの場合:

<a href="javascript:close_window();">close</a>

または:

<a href="#" onclick="close_window();return false;">close</a>

ここでfalseを返すと、イベントのデフォルトの動作が防止されます。それ以外の場合、ブラウザはそのURLに移動しようとします(明らかにそうではありません)。

0
Abhishek