gpt4 book ai didi

jquery - 仅运行一次 window.addEventListener 函数

转载 作者:行者123 更新时间:2023-12-01 08:30:53 29 4
gpt4 key购买 nike

我有这个函数,当我滚动到它时会运行视频:

var _video = document.getElementById('video-one');

function isScrolledIntoView(element) {
var elementTop = element.getBoundingClientRect().top,
elementBottom = element.getBoundingClientRect().bottom;

return elementTop >= 0 && elementBottom <= window.innerHeight;
}

window.addEventListener("scroll", function() {
if (isScrolledIntoView(_video)) {
_video.play();
}
});

问题是,在视频停止后我滚动并返回到它 - 它再次运行。但我只需要它运行一次,仅在我第一次滚动到它时运行。我尝试将函数标记为运行一次,但它不起作用:

var _video = document.getElementById('video-one');

function isScrolledIntoView(element) {
var elementTop = element.getBoundingClientRect().top,
elementBottom = element.getBoundingClientRect().bottom;

return elementTop >= 0 && elementBottom <= window.innerHeight;
}

var started = false;
if (!started) {
window.addEventListener("scroll", function() {
if (isScrolledIntoView(_video)) {
_video.play();
}
});
started = false;
}

我做错了什么?

最佳答案

我们必须传递完全相同的参数,以防删除事件监听器。这个方法已经可以解决问题了。原因是removeEventListener从处理程序的参数列表中获取它的所有参数。

<小时/>

我已将 eventPhase 更改为 TRUE 并且它有效。

window.addEventListener('scroll', function(e){
if (isScrolledIntoView(_video)) {
_video.play();
this.removeEventListener(e.type,arguments.callee,e.eventPhase);
}
}, true); // CHANGED HERE!!!!

关于jquery - 仅运行一次 window.addEventListener 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60783036/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com