带有播放列表的 HTML 5 音频

Posted

技术标签:

【中文标题】带有播放列表的 HTML 5 音频【英文标题】:HTML 5 Audio with Playlist 【发布时间】:2014-04-28 16:38:46 【问题描述】:

我已经开始使用来自 jsfiddle 链接的脚本,http://jsfiddle.net/WsXX3/33/ 用于带有播放列表的 html5 音频播放器。 HTML 和 CSS 部分放置/导入没有问题。但是我发现让javascript运行很困难。音频播放器只播放放置在音频标签中的文件。当我单击播放列表中的一首歌曲时,它会将我带到播放音频文件的另一个页面(黑色背景)。我的问题是我应该导入这个脚本还是应该把它放在 html 文件的头部。此外,运行以下脚本的正确标签是什么(如下所示):

var audio;
var playlist;
var tracks;
var current;

init();
function init()
    current = 0;
    audio = $('audio');
    playlist = $('#playlist');
    tracks = playlist.find('li a');
    len = tracks.length - 1;
    audio[0].volume = .10;
    audio[0].play();
    playlist.find('a').click(function(e)
        e.preventDefault();
        link = $(this);
        current = link.parent().index();
        run(link, audio[0]);
    );
    audio[0].addEventListener('ended',function(e)
        current++;
        if(current == len)
            current = 0;
            link = playlist.find('a')[0];
        else
            link = playlist.find('a')[current];    
        
        run($(link),audio[0]);
    );enter code here

function run(link, player)
        player.src = link.attr('href');
        par = link.parent();
        par.addClass('active').siblings().removeClass('active');
        audio[0].load();
        audio[0].play();

【问题讨论】:

【参考方案1】:

这似乎有效

$(window).load(function()
var audio;
var playlist;
var tracks;
var current;

init();
function init()
    current = 0;
    audio = $('audio');
    playlist = $('#playlist');
    tracks = playlist.find('li a');
    len = tracks.length; // - 1;
    audio[0].volume = .5;
    playlist.find('a').click(function(e)
        e.preventDefault();
        link = $(this);
        current = link.parent().index();
        run(link, audio[0]);
    );
    audio[0].addEventListener('ended',function(e)
        current++;
        if(current == len)
            current = 0;
            link = playlist.find('a')[0];
        else
            link = playlist.find('a')[current];    
        
        run($(link),audio[0]);
    );

function run(link, player)
        player.src = link.attr('href');
        par = link.parent();
        par.addClass('active').siblings().removeClass('active');
        audio[0].load();
        audio[0].play();


)

【讨论】:

【参考方案2】:

把 init();在代码的底部。您在创建函数之前调用 init。

【讨论】:

我把 init();在我的代码底部,没有任何改变。

以上是关于带有播放列表的 HTML 5 音频的主要内容,如果未能解决你的问题,请参考以下文章

带有 jquery 的音频 html5 播放下一首曲目

使用 HTML5 播放音频

Html5之高级-5 HTML5音频处理(在H5中播放音频编程实现音频播放器)

HTML 5 视频或音频播放列表

多个音频,当当前正在使用 javascript 播放时自动停止其他

如何使用 HTML 5 仅播放 Youtube 视频的音频?