我有一个像这样的js函数:
function riproduci(link) {
var ar = link.split("*");
var s = ar[0];
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
}
};
xhttp.open("GET", "incremento.php?link="+s, true);
xhttp.send();
audio.load(s);
audio.play();
}
在link参数中有一系列用*字符分隔的链接,因此我将字符串拆分为不同的链接。所以,为了尝试我已经发送到音频脚本数组中的链接0,现在我想执行此操作:当一首歌完成时(所以,带有onEnded()事件的东西)去取下一个链接并自动将其加载到播放器。我不知道如何才能访问刚刚结束的链接,以便选择下一个。
请不要考虑作为该功能一部分的ajax代码,该代码与我向您提出的问题无关。
答案 0 :(得分:0)
我试着根据给出的指令编写这个函数:
function riproduci(link) {
let i = 0;
var ar = link.split("*");
var n = ar.length;
var audio = document.querySelector("audio");
audio.addEventListener("ended", rp);
audio.load(ar[0]);
audio.play();
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
document.getElementById("titolo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "incremento.php?link="+ar[0], true);
xhttp.send();
function rp(e){
i++;
i = (i >= n) ? 0 : i;
var l = ar[i];
this.load(ar[i]);
this.play();
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
document.getElementById("titolo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "incremento.php?link="+l, true);
xhttp.send();
}
}
但我不知道为什么,它进入一个无限循环,它开始播放链接序列中的所有歌曲,但在不到一秒的时间内从一个播放到另一个。怎么了?
更新:播放器加载的歌曲不到一秒,如果我执行riproduci()函数,音频标签的src不会改变,空的“歌曲”会进入无限循环。 / p>
更新2:这是我的音频播放器。
<div id="pers_player_footer">
<script src="../audiojs/audio.min.js"></script>
<script>
audiojs.events.ready(function() {
var as = audiojs.createAll();
window.audio = as[0];
});
</script>
<audio id="audio" src="../songs/empty.mp3" autoplay='true'/>
</div>
更新3:更新的功能
function riproduci(link) {
var as = audiojs.createAll();
let i = 0;
var ar = link.split("*");
var n = ar.length;
var audio = document.querySelector("audio");
audio.addEventListener("ended", rp);
audio.src = ar[0];
audio.load();
audio.play();
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
document.getElementById("titolo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "incremento.php?link="+ar[0], true);
xhttp.send();
function rp(e){
i++;
i = (i >= n) ? 0 : i;
var l = ar[i];
var as = audiojs.createAll();
audio.src = ar[i];
audio.load();
audio.play();
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
document.getElementById("titolo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "incremento.php?link="+l, true);
xhttp.send();
}
}
这是我找到音频库的链接:https://kolber.github.io/audiojs/