履歴を残さない

ブラウザの「戻る」機能を無効にしたい,という話が時々出る.基本的に無理だと思うのだが,JavaScriptのlocation.replaceを使うと履歴を残さないことはできる.次の画面に遷移するのではなく,今の画面を次の画面と入れ替えるわけだ.以下のhtmlは1st.htmlと2nd.htmlの間を往復するものだが,履歴には何も残らない.

<html>
  <head>
    <title>1st</title>
  </head>
  <body>
    <a href="javascript:location.replace('2nd.html')">2nd</a>
  </body>
</html>
  
<html>
  <head>
    <title>2nd</title>
  </head>
  <body>
    <a href="javascript:location.replace('1st.html')">1st</a>
  </body>
</html>
  

「今表示しているページを新しいページと入れ替える」ので,それまで遷移してきた履歴は残ったままである.上の例で言うと1st.htmlと2nd.html間の履歴は残らないが,それ以前に遷移してきた履歴はブラウザに残る.例えば,Google→1st.html→2nd.htmlと遷移した場合,2nd.htmlから1st.htmlには戻れないが,Googleに戻ることは可能である.

自分のPCのローカルディスクから実行するとWindowsXP+SP2+IEだと警告が出る.

セキュリティ保護のため,コンピュータにアクセスできるアクティブコンテンツは表示されないよう,Internet Explorerで制限されています.

制限を外すか,サーバに持っていくかすればこの警告は出なくなる.