html5 タグを使用して、ユーザーが作成したオーディオを動的に提供しています。
IE10 を含むボード全体で動作しますが、IE9 では動作しません。html5 doctype を使用して、IE9 標準で実行されている適切なドキュメント タイプ タグを確実に持っています。
コードが src を再適用すると、スクリプトは常に 4 回再起動され、Error イベントが発生した場合は再試行されます。IE9 では m4a ( aac audio を使用) と mp3 の両方がサポートされていますが、常に this.error.code 4 ( MEDIA_ERR_SRC_NOT_SUPPORTED ) です。
私が試したこと
- サーバーが audio/x-m4a を返していたので、audio/m4a に変更しました
-mp3 の使用を強制します。
応答ヘッダーは次のようになります
Response HTTP/1.0 200 OK
Date Wed, 22 May 2013 18:09:32 GMT
Access-Control-Allow-Origin *
Content-MD5 xOmafXnKWpXcIV8x8OQVKg==
Content-Disposition inline
Content-Language en-US
Connection close
Content-Type audio/m4a
ランダム理論
オーディオの異なるビット レートで IE が壊れている可能性はありますか? ユーザーが送信したコードは、モノラルとステレオに加えて、3 つの異なるビットレートにすることができます。
サンプルコード
$(this.mAudioPlayer).bind({
error: function(){
if( this.tried != this.retries ){
this.src = this.src;
this.tried++;
var reason = "Error";
switch( this.error.code ){
case 1:
reason = "Aborted";
break;
case 2:
reason = "Decode";
break;
case 3:
reason = "Network";
break;
case 4:
reason = "Not_Supported";
break;
}
HandleWarning("Audio was restarted from error state because of " + reason);
}else{
HandleError("Audio failed to load");
}
},
canplay: function(){
this.loaded = true;
if( this.autoPlay ){
this.play();
}
}
});
Fiddlerには、私が書いたすべてのクラスが含まれており、html5オーディオのクロスブラウザーサポートである混乱のための大量のハックがありますが、ハックが呼び出されるずっと前にエラーが発生するため、それらが原因であるとは思いません.