Javascript Vimeo player.js-Can';t停止上一次视频触发打开";完";听众

Javascript Vimeo player.js-Can';t停止上一次视频触发打开";完";听众,javascript,vimeo-api,Javascript,Vimeo Api,我有一个图像库,可以将vimeo视频加载到叠加图像中。那部分很简单 更困难的部分是: 如果用户单击其中一个视频,则剩余视频应自动加载并自动播放,直到最后一个视频。我也有这个(几乎)工作,(但我可能没有用最好的方式) 现在是我最棘手的部分,还有我的问题: 如何让最后一个视频停止,而不触发on ended事件侦听器 这是我一直在使用的codepen上的一支笔: 我试过用几种方法来解释逻辑。我还尝试过使用destroy方法并重建iframe方法(但我无法让新的iframe显示出来,并将其自身置于de

我有一个图像库,可以将vimeo视频加载到叠加图像中。那部分很简单

更困难的部分是: 如果用户单击其中一个视频,则剩余视频应自动加载并自动播放,直到最后一个视频。我也有这个(几乎)工作,(但我可能没有用最好的方式)

现在是我最棘手的部分,还有我的问题: 如何让最后一个视频停止,而不触发on ended事件侦听器

这是我一直在使用的codepen上的一支笔:

我试过用几种方法来解释逻辑。我还尝试过使用destroy方法并重建iframe方法(但我无法让新的iframe显示出来,并将其自身置于destroy方法留下的空白中)

我想如果我包装newPlayer.on('end',function(){});在一个单独的函数中,我可以阻止它触发,但是不行!这是一个事件侦听器,它在代码中的位置无关紧要。我已尝试使用newPlayer.off()关闭事件侦听器;方法,但显然我做错了。 有人有什么建议吗??我已经干了三天了,运气还不好



// Query All Needed Elements
var overlay = document.querySelector("#videomodal");
var iframePlayer = document.querySelector(".iframe-respwrap");
var videoIframe = document.querySelector(".iframe-respwrap iframe");
var newPlayer = new Vimeo.Player(videoIframe);
// Expose the Source Attribute of the iframe
var iframeSrcAtt = videoIframe.src;
// console.log("Iframe Source: " + iframeSrcAtt);

// Get all of the links
var allItems = document.querySelectorAll('.lightbox a');
console.log(allItems + " - Total (NodeList) Length: " + (allItems.length));
// Get source of Last Item in Array
const finalVideoSrc = allItems[allItems.length-1].children[0].dataset.vidsrc;

// Open/Close overlay
function toggleOverlay(state) { overlay.classList.toggle('video-on'); }
function closeOverlay(e) {
    overlay.classList.toggle('video-on');
    newPlayer.pause().then(function() {newPlayer.unload();}).catch(function(error) { console.log(error); });
}
overlay.addEventListener('click', closeOverlay, false);

// Get initial clicked item source and number
function clickedItem(e) {
    e.preventDefault();
    let clickedSource = e.target.dataset.vidsrc;
    let clickedNumber = parseInt(e.target.parentNode.dataset.number, 10);
    startVidLoop(clickedSource, clickedNumber);
}

// ------------------------------------------
// START HERE!!   Add Event listener to each link
var z;
for (z=0; z < allItems.length; z++) {
    // console.log(allItems[z].children[0].dataset.vidsrc);
    allItems[z].addEventListener('click', clickedItem, false);
    allItems[z].addEventListener('click', toggleOverlay, false);
}

function startVidLoop(vidSrc, vidNumber) {
    if (vidSrc == finalVideoSrc) {
        console.log("Incoming: "+ vidSrc + ", Equals Final Video in List: " + finalVideoSrc);
        newPlayer.loadVideo(vidSrc).then(function(src) {console.log("END! " + src); newPlayer.play(src);}).catch(function(error) {console.log(error);});
        newPlayer.off();
        return;
    } else {
        let nextNumber = vidNumber + 1;
        let comingUp = allItems[nextNumber].children[0].dataset.vidsrc;
        console.log("Playing Now: "+vidNumber+" - "+vidSrc); console.log("Coming Up: "+nextNumber+" - "+comingUp);
        newPlayer.loadVideo(vidSrc).then(function(src) {playVideo(src,comingUp,nextNumber);}).catch(function(error) {console.log(error);});
    }
}

function playVideo(vimeoSource,nextVid,nextNumber) {
    console.log("Play: " + vimeoSource + " Next: " + nextVid);
    newPlayer.play(vimeoSource);
    if (nextVid == finalVideoSrc) {
        console.log("Last Video is Next!");
        nextVid = finalVideoSrc;
    }
    newPlayer.on('ended', function go(data) {
        startVidLoop(nextVid, nextNumber)
    });
}



//查询所有需要的元素
var overlay=document.querySelector(“#videomodal”);
var iframePlayer=document.querySelector(“.iframe respwrap”);
var videoIframe=document.querySelector(“.iframe reswrap iframe”);
var newPlayer=新的Vimeo.Player(videoIframe);
//公开iframe的源属性
var iframescrcatt=videoIframe.src;
//log(“Iframe源:+iframescart”);
//获取所有链接
var allItems=document.queryselectoral('.lightbox a');
log(allItems+“-总(节点列表)长度:”+(allItems.Length));
//获取数组中最后一项的源
const finalVideoSrc=allItems[allItems.length-1]。子项[0]。dataset.vidsrc;
//打开/关闭覆盖
函数toggleOverlay(state){overlay.classList.toggle('video-on');}
函数关闭覆盖(e){
overlay.classList.toggle('video-on');
newPlayer.pause().then(函数(){newPlayer.unload();}).catch(函数(错误){console.log(错误);});
}
overlay.addEventListener('click',closeOverlay,false);
//获取初始单击的项目源和编号
功能点击编辑项(e){
e、 预防默认值();
让clickedSource=e.target.dataset.vidsrc;
让clickedNumber=parseInt(e.target.parentNode.dataset.number,10);
startVidLoop(单击源、单击编号);
}
// ------------------------------------------
//从这里开始!!向每个链接添加事件侦听器
var z;
对于(z=0;z