私もこれを調べてきましたが、検出したいものが完全に検出可能であるという証拠はほとんど見つかりませんでした. しかし、それがおそらく起こったことを検出する方法を見つけました。
イベントで発生することは次のとおりです。
- JavaScript コードが要求を開始します。
- ブラウザはサーバーにリクエストを送信します。
- サーバーはリダイレクトで応答します。
- ブラウザーは、新しい場所が別のドメインであると判断します。
- ブラウザーはリクエストをキャンセルします (ユーザーの安全を確保するため)。
- ブラウザは、リクエストが送信されなかったことを (完全に真実ではありませんが) 報告します。
エラー コールバックで、XMLHttpRequest
オブジェクトのreadyState
フィールドを確認します。0 (「UNSENT」) の場合は、AJAX 要求が送信されなかったことを意味します。
もちろん、送信されなかった理由が常に完全に明確であるとは限りません。たとえば、ユーザーが単にネットワーク ケーブルを抜いた可能性があります。ただし、ネットワークが完全に機能していると仮定する場合は、 が表示されたときにreadyState == 0
、クロスドメインの問題が原因で要求が送信されなかったと仮定することも合理的です。つまり、リダイレクトが発生しました。
jQuery を使用している場合は、jqXHR.readyState
代わりに確認できます。