2012-02-22 12 views
4

サーバー(Socket.IO)の接続が5秒以上無音になると、ページの再読み込みが発生する「安全」コードが付いたWebアプリケーションがあります一般的に顧客サイトのファイアウォール/壊れたプロキシの問題)。ブラウザが新しいページを読み込んでいるかどうかを検出する方法

新しいページの読み込みが始まるとすぐにSocket.IO接続が停止しますが、安全コードではこれが表示されません。遅いページに移動すると、安全コードが起動し、前のページに戻ることができます。

ブラウザが現在新しい(遅い)ページが読み込まれるのを待っているかどうかを(このコードの直前に)伝える必要があります。

これは、すべてのリンクにjQueryのクリックイベント(アドレスバー経由のナビゲーションをキャッチしない)を置く以外に、これを実行する方法は何ですか?

おかげで、

クリス。

答えて

12

モニタリングwindow.onbeforeunloadはこのトリックを行います。ユーザーがナビゲートを開始した直後に発生します。

は、どのページにもクロームコンソールでこれを入力して試してみて、任意のリンクをクリックしてください:

window.onbeforeunload = function() { console.log("oh noes"); } 
2

私の推奨事項:ソケットを切断したときにページをリロードしないようにコードを修正してください。問題が解決しました。

編集
私はあなたが単純なisReloadingときに、ページをリロードとして変数を設定する可能性があるとします。 onbeforeunloadも監視し、最初に何が起きるかを確認する必要があります:切断またはアンロードイベント。切断が最初に発生すると、切断されます。 isReloadingフラグをトリガーしてリロードします。 onbeforeunloadで、フラグが設定されているかどうかを確認します。低速ページがロードされているかどうかのチェックの概念を逆にする:リロード中かどうかをチェックする。

+0

うん、同意するものとします。確認する方法はありません。 – Asken

+0

ありがとうございますが、それは交渉可能ではありません。 – fadedbee

関連する問題