代码之家  ›  专栏  ›  技术社区  ›  lloyd

音频结束后采取行动

  •  0
  • lloyd  · 技术社区  · 9 年前

    尝试用音频学习一些简单的JS内容,因为我做了很多音频工作,我想我会学习如何将一些嵌入到我的网站中,更不用说只是刷一些简单的网络编程。

    我想在音频文件播放完毕后执行一个操作,但过了一段时间(1)循环检查音频。立即结束崩溃。

    我决定使用setInterval每秒检查一次,但这似乎也不起作用。没有撞车,但什么都没有发生。我查阅了Mozilla文档,根据我有限的经验,没有明显的解决方案。

    var audio = document.createElement('audio');
    audio.id = 'audio';
    audio.src = 'track01.mp3';  
    audio.play();
    setInterval(checkFinished(), 1000);
    
    function checkFinished()
    {
        if(audio.ended == false)
        {
            document.write(audio.ended.toString());
        }
        else
        {
            document.write(audio.ended.toString());
            foo();
        }
    }
    
    2 回复  |  直到 9 年前
        1
  •  2
  •   StackSlave    9 年前

    您应该改用Event。

    var audio = document.createElement('audio'); audio.id = 'audio';
    audio.src = 'track01.mp3'; 
    document.body.appendChild(audio); // append somewhere else if wanted 
    audio.play();
    audio.onended = function(){
      console.log('You do say.');
    }
    
        2
  •  1
  •   theThirdZA    9 年前

    正如PHPglue所说,您可以使用.onded。

    下面是一个示例:

    <audio id="myAudio" controls>
      <source src="track01.mp3" type="audio/mpeg">
    </audio>
    
    <script>
    var aud = document.getElementById("myAudio");
    aud.onended = function() {
        alert("The audio has ceased");
    };
    </script>  
    

    (我不喜欢不必要的js,但脚本部分仍然适用,您只需将js用于音频)

    退房 http://www.w3schools.com/tags/av_event_ended.asp 获取一些信息