My page has multiple videos on it and I'm trying to enable seeking through the YouTube API on all of them. These videos are generated dynamically, so I can't pre-define them all at once, unfortunately. If I could, the following would work:
<script>
function onYouTubePlayerAPIReady() {
player = new YT.Player('ytplayer1', {
});
player2 = new YT.Player('ytplayer3', {
});
player3 = new YT.Player('ytplayer3', {
});
etc. etc.
}
function onPlayerReady(event) {
event.target.playVideo();
}
function seek(sec){
if(player){
seconds += sec;
player.seekTo(seconds, true);
}
}
</script>
But because each page will have a different number of dynamically generated videos, I'm running into an issue.
I can make the first and last videos work using the following code:
#Initial javascript + first video
<script>
function onYouTubePlayerAPIReady() {
player = new YT.Player('ytplayer1', {
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function seek(sec){
if(player){
seconds += sec;
player.seekTo(seconds, true);
}
}
var old_foo = onYouTubePlayerAPIReady;
</script>
<iframe id="ytplayer1" width="789" height="444" src="https://www.youtube.com/embed/p4vLPmVAwlo?enablejsapi=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<button type="button" onclick="player.seekTo(60)">60s</button>
<button type="button" onclick="player.seekTo(120)">120s</button>
#Second video plus the JS to go with it
<iframe id="ytplayer2" width="789" height="444" src="https://www.youtube.com/embed/_9ahu4c5zdI?enablejsapi=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<button type="button" onclick="player2.seekTo(60)">60s</button>
<button type="button" onclick="player2.seekTo(120)">120s</button>
<script>
function onYouTubePlayerAPIReady() {
old_foo();
player2 = new YT.Player('ytplayer2', {
});
}
</script>
But whenever I try to add another, the middle ones stop working. It seems like my final call of the onYouTubePlayerAPIReady function is overwriting everything before it, without executing the function at each step. I've tried updating my old_foo var, the onYouTubePlayerAPIReady function, defining a new var, etc. None of it seems to work! But I also suck at javascript so I'm sure I'm just missing something simple.
Help?