2011-07-06 8 views
1

と呼ばれていたかどうかを検出:
Can you detect/redirect a back button press through javascript?のJs - ページが可能な重複履歴から

私は小規模なWebアプリケーションを開発しています。私のアプリケーションでは、ユーザーが「戻る」ボタンをクリックしたときに知っておく必要があるので、いくつかのjavascriptコードを実行できます。それを検出する方法はありますか?

は、あなたがそれを行うことはできません

答えて

1

権限の昇格なしに履歴オブジェクトの次のプロパティにアクセスすることはできません。

フォームフィールドは、ブラウザのキャッシュから自動的にフェッチされ、履歴データを保持します。これは真実ですが、javascriptコードは毎回独立して実行されます。

私は、タイムスタンプを保持し、それをJavaScriptの生成されたデータと比較するための小さな隠しフィールドを作成しました。ここで

がコードである時間が短いですが、私は、それがはるかに優れて実装することができます確信している:

$(document).ready(function() { 
    var date = new Date(); 
    var clientMiliseconds = date.getTime(); 
    clientMiliseconds = roundTime(clientMiliseconds); 
    var serverTimeStamp = $('#' + '<%= hfTimeStamp.ClientID %>').val(); 
    serverTimeStamp = roundTime(serverTimeStamp); 
    alert(serverTimeStamp == clientMiliseconds); 
}); 


function roundTime(time) { 
    time = Math.floor(time); 
    //since the server renders the time components a few seconds before the page is downloaded 
    //which also depends on where you assign the date on the serverside 
    //we've got a small inaccuracy of few seconds. we neglect these seconds, assuming that it would take the user 
    //a few seconds to click the back button 

    time = time/10000; 
    time = Math.floor(time); 
    return time; 
} 
0

ありがとうございました。ユーザーがページから離れてナビゲートするときに何かが発生するようにイベントをバインドすることができます(onbeforeunloadまたはunload()を使用します)。しかし、どこに行ったのかわからない方法はありません。

+1

実際に私は今、地元のjsと比較することが私のサーバーからのタイムスタンプを使用して回避策を実施しています日付時刻。すぐに答えが更新されます! – vondip