問題タブ [xmlhttprequest-level2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - JavaScriptで2つのブロブを比較するには?
以下のコードを使用して、JavaScript で 2 つの BLOB ファイルを読み込みます。
正確に同じかどうかを比較したい。
(blob1 === blob2) は、報告された各 BLOB のサイズが 574 バイトであっても、false を返します。私は何を間違っていますか?
javascript - XMLHttpRequest レベル 2 イベント: readyState と同等
XMLHttpRequest レベル 2 では、1 つのイベントよりも多くの意味のあるイベントが追加されていonreadystatechange
ます。
これらのイベントのいくつかとreadyState
値の間に対応はありますか?
私の知る限り:
私は 3 に相当するものを見つけていませんが、とにかく少しあいまいです。
javascript - XMLHttpRequest のアップロードが Firefox で正しく失敗しないのはなぜですか?
を使用して、ユーザーが 1 つ以上のファイルをアップロードできるファイル アップローダーを実装していますXMLHttpRequest
。アップロードの進行状況に関する視覚的なフィードバックをユーザーに提供できるようにする必要があるため、使用していません。fetch
私が抱えている問題は、アップロードが完了する前にサーバーがアップロードの処理を停止したときに発生します (たとえば、413 Payload Too Large
アップロードされているファイルが大きすぎる場合、エラーで接続を閉じます)。Safari や Chrome を使用しているときにこのようなエラーが発生すると、意図したとおりにアップロードが中断されます。
ただし、Firefox では、これを無視しているように見え、停止する前にアップロードを数回再試行します。
私のコードは次のとおりです。
Safari と Chrome で、サーバーが受け入れるには大きすぎるファイルをアップロードすると、サーバーは 413 ステータス応答で接続を閉じます。イベントは次の順序で発生します。
私の期待通りに。Firefox では、イベントは次の順序で発生します。
ドキュメントに示されているように、Firefox はイベントの前に、、、、またはイベントload
をerror
発生abort
させないようです。timeout
loadend
XMLHttpRequest.upload
各ブラウザの開発ツールのネットワーク タブを見ると、Chrome と Safari の両方がサーバーが 413 で応答したことを認識していますが、Firefox は応答ステータスを認識していません (その後でもloadend
)。
バージョンは Firefox Quantum 62.0b3 (64 ビット) です。サファリは11.0.1です。Chrome は 67.0.3396.99 です。
問題は、アップロード中にサーバー エラーが発生したことを Firefox が認識できず、アップロードをキャンセルできないのはなぜですか? これを解決する方法はありますか?