タイトルの特定のエラー メッセージを Stack Overflow と Google で検索しましたが、見つかりません (ブラウザ設定ではなく、JavaScript コーディングのコンテキストで)。私のサイトには、10 秒ごとに呼び出される関数が 5 つあります。これらの関数は、次のような処理を実行します。
- ユーザーの受信トレイで新着メールを確認する
- ユーザーのアカウントで新しいインスタントメッセージを確認する
- 等
ただし、ユーザーがログインしていても、約 15 分間非アクティブ (マウスを使用しない、またはキーを押しない) の場合、Chrome で「要素を検査」すると次のエラー メッセージが表示されます。
Failed to load resource: net::ERR_NETWORK_IO_SUSPENDED // (x 5)
Uncaught Type Error: Cannot read property 'combinedfiletimeinput' of undefined //one of my previously defined form values is now not defined
この時点で、ユーザーの新しいメール数、新しい IM 数などは空白になります (以前は整数でした)。ユーザーが行う必要があるのは、ページを更新するか、別のページに移動して再接続することだけなので、大きな問題にはなりません。
私のハックソリューションは、15 分以内に以下のイベントがいずれも発生しない場合に JavaScript タイマーを使用してユーザーを自動的にログアウトすることです。
- マウスクリック
- マウス動作
- キーを押す
この「リソースの読み込みに失敗しました」というエラーが発生しないようにする方法はありますか?
更新: これは、ユーザーのデバイスがログオンしたままスリープ/休止状態になったとき、またはユーザーがデバイスを再起動したときに発生するようです。このとき、Chrome の要素の検査、Firebug などでエラー メッセージが表示されることがあります。
2014 年 10 月 2 日更新: 5 つの setTimeout 関数を 1 つの大きな setTimeout 関数にまとめました。さらに、「combinedfiletimeinput」という入力で変更時刻を保持していたフォームが削除され、ファイルの変更時刻を別の方法で処理するようになりました。
以下は、エラーが表示されている Chrome 開発者ツール ログのスクリーンショットです。サイト名の代わりに「mysite」を追加し、実際のファイル名の代わりに「filename」を追加しました。また、外部 JavaScript ファイルの名前を白く塗りつぶし、残っているのは .js だけです (申し訳ありませんが、慎重にしようとしているだけです :) ) スクリーンショットの一部を切り取って、テキストが読める大きさになるようにしました。
スクリーンショットからわかるように、最初の 3 つのリクエストは正常に処理されています。その後、デバイスを「スリープ」状態にして、デバイスの電源を入れ直しました。次の 2 つのリクエストはエラーです (赤色)。最初の 2 つのエラーの後、リクエストは再び正常に処理され始めます (黒いテキストの行、赤いテキストの行の後)。コンソールにエラー メッセージが明確に表示されます。
ベストアンサー1
コミュニティの質問に対する私のコメントを要約するだけです。
いくつかのテストを行った結果、どうやらその設定はAjax タイムアウトすべての呼び出しにタイムアウトを設定することは必須です。タイムアウトがないと、次のようなNET::エラーが発生します。ERR_NETWORK_IO_SUSPENDED、ERR_INTERNET_DISCONNECTED などAjax の実行が停止し、コンピュータの起動後に再開されなくなります。
jQueryの場合:
$.ajax({
url: yourURL,
timeout: 4000
});
のためにXMLHttpリクエスト(XHR):
xhr.timeout = 4000;
さらに、予期しない動作や値によって JavaScript コードが機能しなくなることがないように、スクリプトで接続エラーをキャッチするための例外ハンドラが必要です。
タイムアウトと例外ハンドラがあっても、アプリケーションはNET::エラーをスローしますが、ないアプリケーションに悪影響を与える可能性があります。お知らせ。