滚动播放视频时出现问题?

时间:2016-08-06 19:32:38

标签: javascript jquery video

如果滚动到达#user-experience部分,我会使用以下代码播放视频:

JS:

var player = $('video');

function isInView(elem){
    return $(elem).offset().top - $(window).scrollTop() < $(elem).height();
}

$(window).scroll(function() {

    if (isInView($('#user-experience'))) {
        // console.log('play video');
        player.get(0).play();
    }

});

HTML:

<video>
    <source src="images/browser.webm" type="video/webm">
    <source src="images/browser.mp4" type="video/mp4">
    Your browser does not support HTML5 video.
</video>

代码的问题在于,每次用户滚动一点时它都会触发脚本,直到该部分在浏览器视口中不可见。如果用户滚动到#user-experience部分,代码应该只触发一次。当滚动到另一个部分并返回时,视频不应该第二次播放。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

喜欢这个吗?

var player = $('video');
var hasReachedUserExperience = false;

function isInView(elem){
    return $(elem).offset().top - $(window).scrollTop() < $(elem).height();
}

$(window).scroll(function() {

    if (isInView($('#user-experience')) && !hasReachedUserExperience) {
        hasReachedUserExperience = true;
        player.get(0).play();
    }

});

一个简单的布尔标志似乎符合您的行为要求。