Ver Mensaje Individual
  #7 (permalink)  
Antiguo 20/03/2013, 06:32
Profesor_Lambetain
 
Fecha de Ingreso: septiembre-2010
Mensajes: 67
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Etiquetas <audio> con comportamiento errático en web con selección de melo

Buenos días,
Después de "sudar mucho la camiseta", llego al siguiente código que funciona perfecto en I.E.9 y Firefox, de manera reproducible, esto es, SIEMPRE BIEN.
En Chrome me tengo que conformar con la melodía de defecto (Danubio Azul, porque el desplegable <select><option> no tiene efecto con mi código en este navegador).
En Opera no hace nada de nada: ni suena la de defecto ni actúa el desplegable... la sección de sonido queda muerta.

Agradeceré algún/a valiente/a que se artreva a dar un diagnóstico de los fallos de Chrome y Opera. Gracias:

Código:
...
<SCRIPT TYPE="text/javascript">
...
// Detección del navegador del usuario.
var navegador;
if(navigator.userAgent.indexOf('MSIE')!=-1) {
	navegador="MSIE";
} else if (navigator.userAgent.indexOf('Chrome')!=-1) {
	navegador="Chrome";
} else if (navigator.userAgent.indexOf('Firefox')!=-1) {
	navegador="Firefox";
} else if (navigator.userAgent.indexOf('Opera')!=-1) {
	navegador="Opera";
}
// Carga de la melodía por defecto.
var audios = document.getElementsByTagName('audio');
if (navegador=="MSIE" || navegador=="Opera" || navegador=="Chrome") {
	audios[0].src="musica/DanubioAzul.mp3";
	audios[0].play();
} else if (navegador=="Firefox") {
	audios[0].src="musica/DanubioAzul.ogg";
	audios[0].play(); 
}
...
// FUNCIÓN QUE SELECCIONA EL ARCHIVO DE SONIDO EN FUNCIÓN DE ELECCIÓN <SELECT> DEL USUARIO.
function rep(z){
	var audios=document.getElementsByTagName('audio');
	audios[0].pause();
	// Detección del navegador del usuario.
	var navegador;
	if(navigator.userAgent.indexOf('MSIE')!=-1) {
		navegador="MSIE";
	} else if (navigator.userAgent.indexOf('Chrome')!=-1) {
		navegador="Chrome";
	} else if (navigator.userAgent.indexOf('Firefox')!=-1) {
		navegador="Firefox";
	} else if (navigator.userAgent.indexOf('Opera')!=-1) {
		navegador="Opera";
	} // Fin if.
	if(navegador=="MSIE" || navegador=="Opera" || navegador=="Chrome") {
		switch (z){
			case '1':
				audios[0].src="musica/DanubioAzul.mp3";
				break;
			case '2':
.....
...
			case '42':
				audios[0].src="musica/EscInfanteríaInstrum-aguaracua.mp3";
				break;
		} // Fin switch.
		audios[0].play();
		document.images[29].src="pause.jpg";
		document.images[30].src="play2.jpg";
	} // Fin if.
	if(navegador=="Firefox") {
		switch (z){
			case '1':
				audios[0].src="musica/DanubioAzul.ogg";
				break;
			case '2':
.....
...
			case '42':
				audios[0].src="musica/EscInfanteríaInstrum-aguaracua.ogg";
				break;
		} // Fin switch.
		audios[0].play();
		document.images[29].src="pause.jpg";
		document.images[30].src="play2.jpg";
	} // Fin if.
} // Fin function rep(z).
// FUNCIÓN QUE DA PAUSA Y PLAY AL ARCHIVO DE SONIDO EN REPRODUCCIÓN.
function pauseplay(s){
	var audios = new Array();
	var i=document.forms[0].elements[9].value;
	audios=document.getElementsByTagName('audio');
	if(s==0){
		audios[i].pause();
		document.images[29].src="pause2.jpg";
		document.images[30].src="play.jpg";
	} else if(s==1){
		audios[i].play();
		document.images[29].src="pause.jpg";
		document.images[30].src="play2.jpg";
	}
} // Fin function pauseplay(s).
<SCRIPT>

<html>
<head>
...
</head>
<body>
...
<audio autoplay loop id='sonido1'></audio>
...
<select id="select" name="lista">  
<option class="disab" value="0" disabled>CLÁSICA</option>
<option class="opcion" value="1" selected onClick="rep('1');">Danubio Azul-J. Strauss (h)</option>
<option class="opcion" value="2" onClick="rep('2');">Marcha Triunfal, Aida-Verdi</option>
.....
<option class="opcion" value="42" onClick="rep('42');">Escuela de Infantería</option>
</select>
...
</body>
</html>