web-dev-qa-db-ja.com

JavaScriptを使用して閲覧履歴を消去する方法は?

私はシンプルなプロジェクトをやっています。安全性の高いウェブサイトを取り上げましょう。 5つの異なるJSPページがあります。最初のJSPページから開始した場合、2番目のJSPページにリダイレクトされます。その間、ブラウザの履歴にそれらのページを保存すべきではありません。 JavaScriptを使用してこれらの閲覧履歴をクリアする方法は?

17
Dinesh Kumar

プラグインなしでユーザー履歴をクリアすることはできません。また、開発者の観点では問題ではなく、ユーザーの履歴をクリアするのはユーザーの負担です。

詳細については、 を参照してくださいブラウザ(IE、Firefox、Opera、Chrome)を使用して、ブラウザ自体を除くJavaScriptまたはJavaの履歴を消去しますか?

10
San Krish

document.location.replace()を使用してみてください。履歴の最後のエントリをクリアし、新しいURLのアドレスに置き換えます。 replace()は、ドキュメント履歴から現在のドキュメントのURLを削除します。つまり、「戻る」ボタンを使用して元のドキュメントに戻ることはできません。

<script type="text/javascript">
    function Navigate(){   
         window.location.replace('your link');
        return false;
    }
   </script>

HTML:

   <button onclick="Navigate()">Replace document</button>
26
Krish R

MDN Window.history() が説明するように:

トップレベルのページについては、セッションの履歴にあるページのリストを見ることができます。これは、履歴オブジェクトからアクセスでき、ブラウザの戻るボタンと進むボタンの隣のドロップダウンにあります。

セキュリティ上の理由から、Historyオブジェクトは、非特権コードがセッション履歴の他のページのURLにアクセスすることを許可しませんが、セッション履歴をナビゲートすることは許可します。

セッション履歴をクリアしたり、特権のないコードからの戻る/進むナビゲーションを無効にする方法はありません。最も近い利用可能なソリューションはlocation.replace()メソッドで、セッション履歴の現在のアイテムを指定されたURLに置き換えます。

そのため、セッション履歴をクリアするJavascriptメソッドはありません。代わりに、特定のページへのナビゲートをブロックする場合は、 location.replace() メソッドを使用して、ページリンクをパラメータは、ブラウザのセッション履歴リストにページをプッシュしません。たとえば、3つのページがあります。

a.html:

_<!doctype html>
<html>
    <head>
        <title>a.html page</title>
    <meta charset="utf-8">
    </head>
    <body>
         <p>This is <code style="color:red">a.html</code> page ! Go to <a href="b.html">b.html</a> page !</p>        
    </body>
 </html>
_

b.html:

_<!doctype html>
<html>
    <head>
    <title>b.html page</title>
    <meta charset="utf-8">
</head>
<body>
    <p>This is <code style="color:red">b.html</code> page ! Go to <a id="jumper" href="c.html">c.html</a> page !</p>

    <script type="text/javascript">
        var jumper = document.getElementById("jumper");
        jumper.onclick = function(event) {
            var e = event || window.event ;
            if(e.preventDefault) {
                e.preventDefault();
            } else {
                e.returnValue = true ;
            }
            location.replace(this.href);
            jumper = null;
        }
    </script>
</body>
_

c.html:

_<!doctype html>
<html>
<head>
    <title>c.html page</title>
    <meta charset="utf-8">
</head>
<body>
    <p>This is <code style="color:red">c.html</code> page</p>
</body>
</html>
_

Hrefリンクを使用すると、a.htmlからb.htmlからc.htmlb.htmlでは、location.replace(c.html)メソッドを使用して、b.htmlからc.htmlへ。最後に、c.html *に移動し、ブラウザの戻るボタンをクリックすると、** a.htmlにジャンプします。

これで終わりです!それが役に立てば幸い。

10
monjer

ブラウザの履歴を消去することはできません。開発者ではなく、ユーザーのものです。 MDN documentation もご覧ください。

更新:投稿したリンクは、実際にはブラウザの履歴をクリアしません。戻るボタンを使用できないようにします。

1

戻るボタンの戻る機能を無効にするには:

window.addEventListener('popstate', function (event) {
  history.pushState(null, document.title, location.href);
});
0
HoangYell

OK。これは古代の歴史ですが、私の解決策はあなたや他の開発者にとって役に立つかもしれません。ユーザーがページの戻るキーを押したくない場合(ページAから呼び出されたページBを言う)、最後のページ(ページA)に戻るには、次の手順を実行します。

最初に、Aページで、代わりにwindow.location.hrefまたはwindow.location.replaceを使用して次のページを呼び出します。Aページのwindow.openおよびwindow.closeの2つのコマンドを使用して呼び出しを行います。

<a href="#"
onclick="window.open('B.htm','B','height=768,width=1024,top=0,left=0,menubar=0,
         toolbar=0,location=0,directories=0,scrollbars=1,status=0');
         window.open('','_parent','');
         window.close();">
      Page B</a>;

ウィンドウを開く際のすべての修飾子は、結果のページを構成するためのものです。これにより、戻るキーを使用する可能性がない新しいウィンドウ(popWindow)が開き、呼び出し元ページ(ページA)が閉じられます。

2番目:このページで同じことをしたい場合は、ページBで同じプロセスを使用できます。

まあ。これには、ユーザーがポップアップウィンドウを開くことができることを受け入れる必要がありますが、管理されたシステムでは、作業またはクライアント用にページをプログラミングしているように、これはユーザーに簡単にお勧めします。サイトを信頼済みとして受け入れるだけです。

0
Milicua