Estoy trabajando con una etiqueta de audio cuya fuente puede ser de varios tipos, pero se llama desde un archivo ashx, ya que estoy cargando dinámicamente la transmisión.
<audio id="audio" controls="" autoplay="" download="soundFile.wav"> <source id="mp3" src="../Controls/SoundPlayer/GetSoundFile.ashx?soundType=Sound&fileId=test&fileType=mp3" type="audio/mpeg3"> <source id="wav" src="../Controls/SoundPlayer/GetSoundFile.ashx?soundType=Sound&fileId=test&fileType=wav" type="audio/wav"> </audio>Esta parte funciona bien, pero lo que me gustaría hacer es detectar un error cuando falla. Lo que puedo hacer así:
$('audio').on('error', function (e) { $('#divAudioPlayerMessage').text('Recording can't be played'); }); $('source').on('error', function (e) { $('#divAudioPlayerMessage').text('Recording can't be played'); });O así (que aparentemente solo funciona en IE [Obtuve esto de Cómo verificar si el audio HTML5 ha alcanzado diferentes errores )
document.getElementsByTagName('audio')[0].addEventListener('error', function(e, o) { // audio playback failed - show a message saying why // to get the source of the audio element use $(this).src var errorMessage = ''; switch (e.target.error.code) { case e.target.error.MEDIA_ERR_ABORTED: errorMessage = 'You aborted the video playback.'; break; case e.target.error.MEDIA_ERR_NETWORK: errorMessage = 'A network error caused the audio download to fail.'; break; case e.target.error.MEDIA_ERR_DECODE: errorMessage = 'The audio playback was aborted due to a corruption problem or because the video used features your browser did not support.'; break; case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED: errorMessage = 'The video audio not be loaded, either because the server or network failed or because the format is not supported.'; break; default: errorMessage = 'An unknown error occurred.'; break; } $('#divAudioPlayerMessage').text(errorMessage); }, true);Mi pregunta es ¿cómo puedo saber cuál es el error real? Por ejemplo, en mi archivo ashx podría devolver un error 404, que si obtengo me gustaría dar un mensaje específico.
Además, mi otro problema es que cuando se ejecuta en Chrome o Firefox, que no son compatibles con mp3, se llamará a mi controlador de errores, pero me gustaría ignorar ese error ya que también tengo un archivo wav que es compatible.
¡Gracias!