水曜日に、Firefoxが「XMLHttpRequestのタイムアウト属性の使用はウィンドウコンテキストの同期モードではサポートされていません」と報告し始めたため、私が維持しているAJAXyCRMシステムは多くのユーザーのために壊れました。他の主要なブラウザは引き続き正常に動作するため、回避策としてFirefoxを使用しないようにアドバイスしました。
私が理解していることから、同期リクエストは悪いことです。そのため、Firefoxの最近のアップデートによって、悪いことへの対応が妨げられたとしか思えません。これまでのすべての議論(こことWeb上)は、同期XMLHttpRequestオブジェクトでのtimeout属性の使用がまったく機能しないことを示唆しているため、なぜそれが明らかに機能するのか疑問に思います(水曜日のFirefoxを除く)。
他のブラウザ/古いFirefoxは、実際には「すべきではない」タイムアウト動作を実装していますか、それとも(新しいFirefoxのようにベイルアウトするのではなく)例外を無視して実行を続行しますか?
編集:今はコードにアクセスできませんが、次の行に沿っていました:
「this」はおそらくXMLHTTPRequestから継承された複雑なものであり、「c」は特定のAJAXリクエストなどを参照する特定のオブジェクトです。Javascriptとこの特定のSugarベースのCRMの両方についてほとんど知らないことは明らかですが、コードの本質は単純でした。これは、リクエストを行うための一般的なオブジェクト指向の方法であり、この特定の4行ほどは、リクエストがタイムアウトしたときに処理されました。これは、特定のリクエスト(またはリクエストするエンティティ)が専門とする抽象的なベースであるという印象を受けます。FirefoxJavascriptエンジンがでチョークします。if (c.somekindoftimeouthandler !== "unassigned" && this.timeout) {
c.timeout = this.timeout
//more stuff about the handler etc...
}this.timeout
私の質問の推力はもっと一般的だと思います-同期XHRにタイムアウトを使用することの「悪い点」を考えると、さまざまなブラウザはそれをどのように処理しますか?