2013-07-09 4 views
0

Вот мой код для загрузки и воспроизведения аудиофайла.Невозможно загрузить аудиофайл в javascript

<!DOCTYPE HTML> 
<html lang="en-US"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Test audio</title> 
</head> 
<body> 
<script type="text/javascript"> 
    window.onload = function() { 
     var audio = new Audio("../../data/audio/background.ogg"); 
     audio.preload = "auto"; 

     audio.addEventListener('ended', function() { 
      alert('ended'); 
     }, false); 
     audio.addEventListener('canplaythrough', function() { 
      audio.loop = true; 
      audio.play(); 
     }, false); 

     audio.onerror = function(event) { 
      console.log(event.code); 
     } 

     audio.load(); 
    } 
</script> 
</body> 
</html> 

Но я не могу запустить его на Chrome (Firefox или IE 9 являются Оке), потому что, если звук загрузки файла, я всегда получаю ошибку

error

Как я могу исправить мой код ?

+0

Я предполагаю, что ваш сервер является проблемой, а не код ... который должен работать нормально. – xen

ответ

2

На настольном Chrome вы можете сделать это автоматически только в HTML без Javascript.

<audio autoplay> 
    <source src="test.ogg" type="audio/ogg"> 
    <source src="test.mp3" type="audio/mpeg"> 
    Sorry, no Audio support 
</audio> 

Ваш код в целом должен работать. Я просто поместил его в http://jsbin.com/usific/1 и добавил свой собственный звуковой файл, и я вижу, что он загружает весь файл, похоже, что ваш сервер не принимает запрос, или вы указали неправильный URL-адрес.

+0

Я не хочу создавать звуковые теги, потому что загружаю аудиофайлы для своей игры –

+0

Это круто, вы все равно можете повторно использовать элемент, если это необходимо. Отметим, что в последней части ответа говорится, что ваш код работал на меня. – Kinlan

1

Это работает для меня:

 var audioElement; 
     audioElement = new Audio(""); 
     audioElement.addEventListener('ended', function() { 
      this.currentTime = 0; 
      this.play(); 
     }, false); 

     document.body.appendChild(audioElement); 
     audioElement.src = '../../data/audio/background.ogg'; 
     audioElement.id = "audioElement"; 

     audioElement.addEventListener('canplaythrough', function() { 
      audioElement.play(); 
     }, false); 

     audioElement.addEventListener('ended', function() { 
      alert('ended'); 
     }, false); 

     audioElement.onerror = function(event) { 
      console.log(event.code); 
     } 
+0

@azhwkd Вам это нравится, не так ли :-P –

+1

@TobiasKienzler конечно! : D Но код не работал, поэтому ... – xen

+0

@azhwkd Я просто хочу, чтобы больше людей были настолько прилежными до (до) голосования (или одобрения не очень-то разумных редакций ...) –