如何在鼠标点击或鼠标悬停在网页上播放音频文件的一部分?

时间:2012-06-14 15:06:55

标签: javascript html html5 html5-audio

我正在创建一个教授阿拉伯语单词的网站。我包括数字,序数,星期几等等。我有一个音频文件,包含所有这些,我想用鼠标悬停或鼠标点击它。现在,我不想将音频剪切成许多部分以使其工作。有没有办法在鼠标点击或鼠标悬停时调用音频文件,只能部分播放文件?例如,我有一个音频文件,其数字从1到10,让我们说每个都是第二长。当用户点击数字5时,我希望能够拨打号码音频文件并播放第5秒并停止。这可能吗?以下是我调用和播放整个音频的代码。谢谢!

<!DOCTYPE html>
<html>
<head>
    <title>Arabic Letters</title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

<script language="javascript" type="text/javascript">
 function playSound(soundfile) {
 document.getElementById("dummy").innerHTML=
 "<embed src=\""+soundfile+"\" hidden=\"true\" autostart=\"true\" loop=\"false\" />";
 }
 </script>

</head>

<body>
     <span id="dummy"></span> 

<a href="#" onclick="playSound('1-001_page3.mp3');"><p dir="rtl" lang="ar"
class="letter">واحِد</p></a>

</body>
</html>

1 个答案:

答案 0 :(得分:3)

我会使用全局变量设置当前停止点并绑定timeupdate侦听器以检查是否已到达时间:

var endTime = 0;
// do this binding once at page load time
myaudio.addEventListener("timeupdate", function() {
    if(this.currentTime >= endTime) {
        this.pause();
    }
});

对于每个事件,请设置myaudio.currentTime的开始时间,endTime的结束时间和音频的play()

// plays the audioObj from start to stop times (in seconds)
// call this for each snippet you wish to play (e.g., in an onclick handler)
function playInterval (audioObj, start, stop) {
    audioObj.currentTime = start*1000;
    endTime = stop*1000;
    audio.play();
}