これはよくある問題だと思いましたが、グーグルで調べても明らかな解決策はないようです。
私のページでは、ユーザー アクションによって AJAX リクエストがトリガーされます。YUI 2.X では、コードは次のようになります。
Connect.asyncRequest("POST", url,
{
'failure' : function() { alert('failed'); },
'success': function() { doSuccess(); },
'scope": this,
},
dataStr);
AJAX リクエストが失敗した場合、エラーを表示するダイアログ (必ずしもアラートではない) をポップアップ表示したいと思います。ただし、AJAX リクエストに数秒かかる場合、[更新] ボタンをクリックしてページをリロードすると、ダイアログが常にポップアップします。これは良くない。そのため、リロード時にダイアログを抑制したいと考えています。
ページがリロードされると、オブジェクト {status: 0, statusText: 'communication failure'} で「failure」コールバックが呼び出されます。これは、他の種類の接続障害と区別されません。そのため、コールバック オブジェクトに基づいてアンロード フェーズであるかどうかを判断できません。
現在、私の回避策は、「beforeunload」イベントをリッスンすることです。
Event.on(window, 'beforeunload', function() { isUnloading = true; });
失敗のコールバックは、isUnloading 値に基づいてダイアログを表示するかどうかをチェックします。
これは機能しますが、「beforeunload」イベントは標準ではありません。このような場合を処理するためのより良い方法はありますか?
ありがとう