2016-07-19 7 views
0

ページに何か起こる前に、ブラウザの戻るボタンをキャッチしたいと思います。私は多くの解決策を見てきました。以前のページが完全に読み込まれたときにこのイベントをキャッチしていますが、私はそれを必要としません。私はそれをキャッチする前に、何かが起こる前に。 私は別の良い解決策、すべてのブラウザとプラットフォームでブラウザの戻るボタンをキャッチするためのより良いソリューション

$(window).on('popstate', function() { 
    var hashLocation = location.hash; 
    var hashSplit = hashLocation.split("#!/"); 
    var hashName = hashSplit[1]; 

    if (hashName !== '') { 
    var hash = window.location.hash; 
    if (hash === '') { 
     alert('Back button was pressed.'); 
    } 
    } 
}); 
window.history.pushState('forward', null, '#b'); 
} 

かなり効果的な解決策を見つけたとしても何がページに起こったが、受け入れられない私のURL、この書き込み#B前に、これは、ボタンイベントをバックキャッチ。
ページに何らかの事が起きる前に、ブラウザの戻るボタンをクリックすると、ヘルプが必要です。

実際、私の完全なストーリーは、バックを押すと変数をクッキーに保存します。まもなくスクリプトがページのロード時に最初にヒットし、私はクッキーをチェックし、その後ページ全体をリロードします。したがって、サーバー側はキャッシュの代わりに呼び出し生成されます。代替ソリューションはありますか?

私はかなり長い間解決策を探していますが、有効な解決策はまだ見つかりません。 ありがとうございます。

+0

本当にそれをキャッチする方法はありません.... – epascarello

+0

私はクッキーを設定するには、いくつかの1つ戻るボタンを押すと、本当にそれを行う方法はありません? –

+0

アンロード時にCookieを設定できますか? – epascarello

答えて

0

最後に、私が探していた解決策が見つかりました。私はキャッシュからページをロードしたくないので、戻るボタンを処理する必要があります。キャッシュを停止することはできません。なぜなら、私のブラウザにはCSSとjqueryをキャッシュしたいがHTMLはキャッシュしないからです。 HTMLをキャッシュするのを止めることはこれまで可能ではありませんでした。

私は解決策を見つけたので、サーバー側にクッキーを追加しました。RequestedFrmServer。私のコードがサーバーにヒットするたびに(またはサーバー側の要求が生成されるたびに)1に設定すると、すぐにクライアント側のスクリプトにヒットします。値が0の場合は条件を設定し、ページ全体をリロードします。

ここにコードです。

var _historyBack = $.cookie('RequestedFrmServer'); 
if (_historyBack != undefined && _historyBack == "1") 
{ 
    setCookie("RequestedFrmServer", "0"); 
} 
else if(_historyBack != undefined && _historyBack == "0") 
{ 
    window.location.reload(true); 
} 

私の場合は、あなたのために働く場合は、私は親指に値する。 :)

関連する問題