HTML5 音频的 jQuery 全局播放和暂停
我有一个充满 HTML5 音频标签的页面,每个标签都可以在播放和暂停之间切换,并且一次只能播放一个。我正在开发一组全局控件,这些控件将播放/暂停任何活动的内容,扫描到开始或上一个曲目以及下一个曲目。如果您有任何想法或解决方案可以帮助我解决所有这些问题,请大声说出来:)
关于全球音频,我已经把我认为理论上可行的东西搞砸了,但没有得到任何结果。通过 Firebug 没有错误...不知道从这里去哪里。
非常感谢您的建议!
HTML:
<div id="global"></div>
<div id="music_right">
<div class="thumbnail" id="paparazzi">
<a class="playback">
<img class="play" src="../images/icons/play.png" />
</a>
<audio>
<source src="../audio/fernando_garibay_paparazzisnlmix.ogg" type="audio/ogg" />
<source src="../audio/fernando_garibay_paparazzisnlmix.mp3" type="audio/mpeg" />
<source src="../audio/fernando_garibay_paparazzisnlmix.wav" type="audio/x-wav" />
Your browser does not support HTML5 audio.
</audio>
</div>
<div class="thumbnail" id="danceinthedark">
<a class="playback">
<img class="play" src="../images/icons/play.png" />
</a>
<audio>
<source src="../audio/fernando_garibay_danceinthedark.ogg" type="audio/ogg" />
<source src="../audio/fernando_garibay_danceinthedark.mp3" type="audio/mpeg" />
<source src="../audio/fernando_garibay_danceinthedark.wav" type="audio/x-wav" />
Your browser does not support HTML5 audio.
</audio>
</div>
<div class="thumbnail" id="bornthisway">
<a class="playback">
<img class="play" src="../images/icons/play.png" />
</a>
<audio>
<source src="../audio/fernando_garibay_bornthisway.ogg" type="audio/ogg" />
<source src="../audio/fernando_garibay_bornthisway.mp3" type="audio/mpeg" />
<source src="../audio/fernando_garibay_bornthisway.wav" type="audio/x-wav" />
Your browser does not support HTML5 audio.
</audio>
</div>
</div>
JavaScript:
//global play/pause
$('#global').click(function(){
var song = $('audio');
if(song.paused){
song.play();
} else {
song.pause();
}
});
//audio tag play/pause
var curPlaying;
$(function() {
$(".playback").click(function(e){
e.preventDefault();
var song = $(this).next('audio')[0];
if(song.paused){
song.play();
if(curPlaying) $("audio", "#"+curPlaying)[0].pause();
} else {
song.pause();
}
curPlaying = $(this).parent()[0].id;
});
});
I've got a page full of HTML5 audio tags, each of which can toggle between play and pause, and only one can play at a time. I'm working on a set of global controls that will play/pause whatever is active, scan to beginning or previous track, and next track. If you have any ideas or solutions that can help me solve all of those please speak up :)
Regarding the global audio, I've botched together what I consider theoretically feasible, but am not getting any results. No errors via Firebug... Not sure where to go from here.
Your advice is much appreciated!
HTML:
<div id="global"></div>
<div id="music_right">
<div class="thumbnail" id="paparazzi">
<a class="playback">
<img class="play" src="../images/icons/play.png" />
</a>
<audio>
<source src="../audio/fernando_garibay_paparazzisnlmix.ogg" type="audio/ogg" />
<source src="../audio/fernando_garibay_paparazzisnlmix.mp3" type="audio/mpeg" />
<source src="../audio/fernando_garibay_paparazzisnlmix.wav" type="audio/x-wav" />
Your browser does not support HTML5 audio.
</audio>
</div>
<div class="thumbnail" id="danceinthedark">
<a class="playback">
<img class="play" src="../images/icons/play.png" />
</a>
<audio>
<source src="../audio/fernando_garibay_danceinthedark.ogg" type="audio/ogg" />
<source src="../audio/fernando_garibay_danceinthedark.mp3" type="audio/mpeg" />
<source src="../audio/fernando_garibay_danceinthedark.wav" type="audio/x-wav" />
Your browser does not support HTML5 audio.
</audio>
</div>
<div class="thumbnail" id="bornthisway">
<a class="playback">
<img class="play" src="../images/icons/play.png" />
</a>
<audio>
<source src="../audio/fernando_garibay_bornthisway.ogg" type="audio/ogg" />
<source src="../audio/fernando_garibay_bornthisway.mp3" type="audio/mpeg" />
<source src="../audio/fernando_garibay_bornthisway.wav" type="audio/x-wav" />
Your browser does not support HTML5 audio.
</audio>
</div>
</div>
JavaScript:
//global play/pause
$('#global').click(function(){
var song = $('audio');
if(song.paused){
song.play();
} else {
song.pause();
}
});
//audio tag play/pause
var curPlaying;
$(function() {
$(".playback").click(function(e){
e.preventDefault();
var song = $(this).next('audio')[0];
if(song.paused){
song.play();
if(curPlaying) $("audio", "#"+curPlaying)[0].pause();
} else {
song.pause();
}
curPlaying = $(this).parent()[0].id;
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我想我昨天帮助你解决了这个项目的另一个问题。
您应该像这样更改
global
div 的点击处理程序:当您执行
var Song = $("audio");
之类的操作时,song 变量最终代表一个集合页面上所有元素的数量,这就是为什么当您检查
song.paused
时它不起作用,因为您没有处理单个音频元素在那一点上。I helped you out on a different question for this project yesterday I think.
You should change your click handler for the
global
div like so:When you do something like
var song = $("audio");
the song variable ends up representing a collection of all the<audio>
elements on the page and that's why it doesn't work when you checksong.paused
because you're not dealing with an individual audio element at that point.您可能不是在寻找插件,但这个插件确实很棒。它还将在移动设备上播放音频。
http://www.jplayer.org/
我不久前做了一个快速演示。
http://sethaldridge.com/demos/
You may not be looking for a plugin, but this one is really great. It also will play the audio on a mobile device.
http://www.jplayer.org/
Quick Demo I made a while back.
http://sethaldridge.com/demos/