audio.play()html标签不能在chrome中播放

时间:2014-10-24 10:11:12

标签: javascript angularjs google-chrome html5-audio

我在使用chrome播放音频时遇到问题,因为在播放调用之前未调用audio.src。但是,firefox播放它没问题。有人可以建议吗?以下是小提琴链接 -

http://jsfiddle.net/vn215r2d/1/

也可以在这里找到代码 -

<html>
   <head>
      <script language="javascript">      
          var audioo = document.createElement("audio");

          function newCall() {        
              audioo.src = "";
              audioo.src = "http://xx.xx.xx.xx:8181/api/captcha/sound";
              audioo.play();               
          } 

          function playAgain() {               
               audioo.play(); // doesn't work in chrome :(
          } 

      </script>
   </head>
   <body>
   <button type="button" onClick="newCall()">New Captcha Call</button>
   <br>
   <button type="button" onClick="playAgain()">Replay Captcha</button>   
</body>
</html>

1 个答案:

答案 0 :(得分:1)

更新

哎呀,显然是在你重写src之前,你的audio.currentTime是不可写的。继承人你能做什么,它确实有效:

function newCall() {  
    audioo.src = "http://xx.xx.xx.xx:8181/api/captcha/sound";
    // make all audio attributes writeable again by resetting the src
    audioo.src = audio.src;             
} 

答案采取了一些谷歌搜索,但我从这里得到它:https://stackoverflow.com/a/14850353

原始

我在Chrome上测试了重置音频位置并且工作正常。最安全的是首先暂停,但无论哪种方式都可以。

var audioo = document.createElement("audio");

// Lets add an event listener to play when we are ready to start playing
audioo.addEventListener("canplaythrough", function(){
    audioo.play(); 
}, false); 

function newCall() {        
     audioo.src = "";
     audioo.src = "http://xx.xx.xx.xx:8181/api/captcha/sound";             
} 

function playAgain() { 
     // Let's check if we are ready enough to play
     if(audioo.readyState === 4){                       
         audioo.pause(); // first pause        
         audioo.currentTime = 0; // then reset           
         audioo.play(); // then play
     } else {
         // else inform us that we are not ready to play yet.
         alert("Audio not ready yet.");
     }
} 

以下是两个有用的资源: