Javascript 间隔结束后,等待歌曲在iframe audio player中结束,然后再运行父项中的函数

Javascript 间隔结束后,等待歌曲在iframe audio player中结束,然后再运行父项中的函数,javascript,iframe,setinterval,addeventlistener,Javascript,Iframe,Setinterval,Addeventlistener,我正在尝试制作一个本地html音频播放器,它可以在有多个音频播放器的页面之间切换。我希望洗牌每30分钟进行一次,但我希望它等到第一个音频播放器播放完它的曲目后再运行随机播放功能 我在让主窗口访问iframe中的音频播放器时遇到了问题,我还不知道如何在setinterval命令中调用eventlistener。 这是我的密码: 主页: <iframe src="sPLIF.html" height="200" width="900"

我正在尝试制作一个本地html音频播放器,它可以在有多个音频播放器的页面之间切换。我希望洗牌每30分钟进行一次,但我希望它等到第一个音频播放器播放完它的曲目后再运行随机播放功能

我在让主窗口访问iframe中的音频播放器时遇到了问题,我还不知道如何在setinterval命令中调用eventlistener。 这是我的密码:

主页:

<iframe src="sPLIF.html" height="200" width="900" frameborder="0" id="pmframe" title="PLIF Player"></iframe>

<script>
    var lastSong = null;
    var selection = null;
    var playlist = [
    "PLIF1/plif1.html", 
    "PLIF200703/PLIF200703.html",
    "PLIF200802/PLIF200802.html",
    "PLIF200808/PLIF200808.html",
    "PLIF200816/PLIF200816.html",
    "PLIF200823/PLIF200823.html",  
    "PLIF_Noir/PLIF_Noir.html",
    "PLIF3_Dream/plif3_dream.html", 
    "sPLIF.html"]; 
   
    var player = document.getElementById("pmframe");
    function selectRandom(){
        while(selection == lastSong){
        selection = Math.floor(Math.random() * playlist.length);
    }
        lastSong = selection; 
        player.src = playlist[selection]; 

    }
    
    selectRandom(); 
    setInterval(endSong, 1800000); 

var alto = document.getElementById("pmframe").contentWindow.player;
  
setTimeout(endSong, 1800000); 

function endSong(){
    alto.addEventListener("ended", selectRandom);
}
    
</script>

var lastSong=null;
var选择=null;
var播放列表=[
“PLIF1/PLIF1.html”,
“PLIF200703/PLIF200703.html”,
“PLIF200802/PLIF200802.html”,
“PLIF200808/PLIF200808.html”,
“PLIF200816/PLIF200816.html”,
“PLIF200823/PLIF200823.html”,
“PLIF_Noir/PLIF_Noir.html”,
“PLIF3_Dream/PLIF3_Dream.html”,
“sPLIF.html”];
var player=document.getElementById(“pmframe”);
函数selectRandom(){
while(selection==lastSong){
选择=Math.floor(Math.random()*playlist.length);
}
lastSong=选择;
player.src=播放列表[选择];
}
选择随机();
设定间隔(尾声,1800000);
var alto=document.getElementById(“pmframe”).contentWindow.player;
setTimeout(endSong,1800000);
函数endSong(){
alto.addEventListener(“结束”,选择Random);
}
还有一个示例iframe页面:

<audio id="alto" autoplay>
<source src="alto.m4a" type="audio/m4a">
</audio>

<audio id="drums" autoplay>
<source src="drums.m4a" type="audio/m4a">
</audio>



<script>
    var lastSong = null;
    var selection = null;
    var playlist = [
    "alto1x.m4a", 
    "alto1x.m4a",    
    "pause.m4a"]; 
    var player = document.getElementById("alto"); 
    player.autoplay=true;
    player.addEventListener("ended", selectRandom);

    function selectRandom(){
        selection = Math.floor(Math.random() * playlist.length);
        lastSong = selection; 
        player.src = playlist[selection]; 
    }

    selectRandom(); 
    player.play(); 
</script>

<script>
    var lastSong2 = null;
    var selection2 = null;
    var playlist2 = ["drums1x.m4a", "drums1x.m4a", "pause30s.m4a"]; 
    var player2 = document.getElementById("drums"); 
    player2.autoplay=true;
    player2.addEventListener("ended", selectRandom2); 

    function selectRandom2(){
        selection2 = Math.floor(Math.random() * playlist2.length);
        lastSong2 = selection2; 
        player2.src = playlist2[selection2]; 
    }

    selectRandom2(); 
    player2.play(); 
</script>

var lastSong=null;
var选择=null;
var播放列表=[
“alto1x.m4a”,
“alto1x.m4a”,
“暂停.m4a”];
var player=document.getElementById(“alto”);
player.autoplay=true;
player.addEventListener(“结束”,选择Random);
函数selectRandom(){
选择=Math.floor(Math.random()*playlist.length);
lastSong=选择;
player.src=播放列表[选择];
}
选择随机();
player.play();
var lastSong2=null;
var selection2=null;
var playli2=[“drums1x.m4a”、“drums1x.m4a”、“pause30s.m4a”];
var player2=document.getElementById(“鼓”);
player2.autoplay=true;
player2.添加ventListener(“结束”,选择random2);
函数selectRandom2(){
selection2=Math.floor(Math.random()*playli2.length);
lastSong2=选择2;
player2.src=playli2[selection2];
}
选择随机数2();
player2.play();

大家好,欢迎来到StackOverflow。感谢您发布代码-这通常很有帮助。在这种情况下,您不会真正说出为什么这段代码不够,您尝试了哪些代码,哪些代码不起作用,或者您不希望看到的确切行为。请编辑您的问题并添加更多详细信息,以便人们可以帮助您找到答案@Davidvandries谢谢你的帮助,我已经更新了列表。基本上,我在获取“document.getElementById(“pmframe”).contentWindow.player;”与iframe中的音频播放器通信时遇到了问题。我尝试过简单的暂停测试,但似乎没有同步。但是我也不确定我的setInterval是否正确设置了一个事件监听器来播放函数。嗨,欢迎来到StackOverflow。感谢您发布代码-这通常很有帮助。在这种情况下,您不会真正说出为什么这段代码不够,您尝试了哪些代码,哪些代码不起作用,或者您不希望看到的确切行为。请编辑您的问题并添加更多详细信息,以便人们可以帮助您找到答案@Davidvandries谢谢你的帮助,我已经更新了列表。基本上,我在获取“document.getElementById(“pmframe”).contentWindow.player;”与iframe中的音频播放器通信时遇到了问题。我尝试过简单的暂停测试,但似乎没有同步。但是我也不确定我的setInterval是否正确设置了一个事件监听器来播放函数。