正所謂節後三天瘟!第一天上班腦子迷迷糊糊。一上來就寫一端代碼控制audio,憑藉僅存的記憶,還不錯!弄出來了!中間遇到了一點點小坑,特地拿出來曬曬,免得以後再吃虧!
任務要求:利用js或者jq控制音頻的播放,不要原生的控制器。
正所謂: js未動,html先行。 (爲了方便演示:其中MP3的資源,我利用線上的了)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p>javascript</p>
<input type="button" value="播放" id="play">
<audio id="bgMusic" >
<source src="http://cctv3.qiniudn.com/zuixingfuderen.mp3" type="audio/mp3">
<source src="http://cctv3.qiniudn.com/zuixingfuderen.mp3" type="audio/ogg">
</audio>
</body>
</html>
一個小建議:第一次打開,audio標籤後面加上autoplay打開網頁就自動播放了,再加上controls就會出現默認的控制器,否則頁面什麼都沒有,看上去還以爲出問題呢!確認加載無誤,就可以刪除了。
先完成最基礎的功能就是播放/暫停。利用audio.play()和audio.pause()就可以輕鬆的實現了。注意:不是stop();
接下來就是如何利用一個按鈕實習播放 暫停。像toggle一樣。這個坑讓我停留的時間有點長。先上代碼!
window.οnlοad=function(){
var play=document.getElementById('play');
var bgm = document.getElementById('bgMusic');
play.onclick = function () {
console.log(bgm.paused);
if (bgm.paused) {
bgm.play();
play.value="播放";
}else{
bgm.pause();
play.value="暫停";
}
}
}
這裏主要說的就是判斷條件。我一直以爲是audio.pause屬性 結果少了一個“d” .希望大家注意一下:是:audio.paused.
還有一個就是靜音的效果。判斷的條件與設置都比較特殊,一同拋出來。
if(bgm.muted){
bgm.muted = false;
mute.value="外音";
}else{
bgm.muted = true;
mute.value="靜音";
}
在這裏 我放上demo的連接 大家自己去下載吧!
最後再來說一個jquery實現這樣的效果,會遇到的一個坑!
$(document).ready(function () {
$("#toggle").click(function(){
if($("#bgMusic").get(0).paused){
$("#bgMusic").get(0).play()
$("#toggle").val("play");
}else{
$("#bgMusic").get(0).pause();
$("#toggle").val("stop");
}
})
})
看完代碼估計大家也知道是什麼了,就是 get(0)! 這個bug的解決還是得益於stackoverflow。
特意標出的三個小坑,希望幫助到大家!
還有快進 快退 進度條都沒有來得及做。我將在寫關於video標籤博客的時候,補充一下!這裏就不過多廢話了!
最後留一個坑!就是判斷播放結束。該用什麼?