Javascript音频功能不起作用

时间:2017-06-10 14:24:03

标签: javascript html audio

我遇到了这个javascript代码的问题。在我的网站中,我有一个div中的音频播放器(这个播放器是通过js定制的),并且工作得很好,这些是用于在页面中显示播放器的指令:

<div id="pers_player_footer">
<script src="../audiojs/audio.min.js"></script>
<script>
audiojs.events.ready(function() {
var as = audiojs.createAll();
});
</script>
<audio src='../songs/empty.mp3' id='player' preload='auto' autoplay='true'/>
</div>

我的播放器以空歌开头。当我想播放特定歌曲时,执行riproduci()函数并传递link参数以更改src音频标签。这是我的js函数:

function riproduci(link) {
document.getElementById("pers_player_footer").innerHTML = "<script 
src='../audiojs/audio.min.js'></script>
<script>audiojs.events.ready(function() {var as = audiojs.createAll();});
</script><audio src='"+link+"' id='player' preload='auto' 
autoplay='true'/>";
}

这就是结果:新代码写得正确,歌曲开始正常播放,在我的div中老玩家消失,但新播放器不会留下空白区域。这有什么问题?

1 个答案:

答案 0 :(得分:0)

对脚本进行小的更改,如下所示:

<div id="pers_player_footer">
<script src="../audiojs/audio.min.js"></script>
<script>
    audiojs.events.ready(function() {
        var as = audiojs.createAll();
        // yeah I know, globals suck
        window.audio = as[0];
    });
</script>
<audio src='../songs/empty.mp3' id='player' preload='auto' autoplay='true'/>
</div>

然后你可以将你的功能改为

function riproduci(link) {
    audio.load(link);
    audio.play();
}

是的,我知道全局变量很糟糕,但如果没有原始代码的更多上下文,这就更好了