0

iframe を含む Web アプリがあります。主要部分で、クライアントは ajax によってサーバーと通信します。さらに、 beforeunload = function(){ return "something";} を追加したため、ユーザーがブラウザの戻るボタンをクリックするとアラートが表示され、ユーザーがページを離れるをクリックすると、セッションが失われ、ログインしますページが表示されます。iframe部分ではサーブレットを使用しているため、ユーザーがブラウザーの戻るボタンをクリックしても、iframeページのみがアンロードされるため、アラートは表示されません。今、私が達成したいこと。ユーザーがiframeで操作しているときに、ブラウザの戻るボタンをクリックするとアラートが表示され、ユーザーがページを離れるをクリックすると、アプリ全体をログオフしたい. 彼が iframe 内のページを離れないでクリックすると、リロードされません。

アンロードとアンロードの前に2つのイベントを使用してこれを解決しようとしました。これはiframe内にあります:

var confirm = false;
var clicked = true;
$(window).on('beforeunload', function(evt){
    if(confirm){
        return "Text";
    } else {
        clicked = false;
    }
});
$(window).on('unload',function(evt){
    if(clicked){
        $(this).off('beforeunload');
        window.parent.location = window.parent.location + "/error";
    }
});

iframe で操作しているユーザーがブラウザの戻るボタンをクリックすると、アラートが表示されるようになりました。ページを離れるクリックがうまく機能したら、ログアウトします。しかし、クリックが離れない場合、iframeのページは以前に戻ってしまい、理由はわかりません:(.それを防ぎたい.

4

1 に答える 1

0

ブラウザの戻るボタンの機能を無効にすることはできませんが、できることはそれらを防ぐことだけです。

以下は、ユーザーが戻るボタンを使用して再度アクセスしたくないページのヘッド セクションに配置する必要がある JavaScript スニペットです。

<script type = "text/javascript" >

   function preventBack(){window.history.forward();}

    setTimeout("preventBack()", 0);

    window.onunload=function(){null};

</script>

Page1.aspx と Page2.aspx の 2 つのページがあり、Page1.aspx が Page2.aspx にリダイレクトするとします。

したがって、ユーザーが [戻る] ボタンを使用して Page1.aspx にアクセスできないようにするには、以下に示すように、上記のスクリプトを Page1.aspx の head セクションに配置する必要があります。

ここに画像の説明を入力

元の記事は次のとおりです: http://www.aspsnippets.com/Articles/Disable-Browser-Back-Button-Functionality-using-JavaScript.aspx

于 2014-04-10T03:43:27.317 に答える