Javascript 查看时自动播放HTML5视频

Javascript 查看时自动播放HTML5视频,javascript,jquery,html,video,scroll,Javascript,Jquery,Html,Video,Scroll,我需要一个特别的JS的帮助,我用它来播放HTML5视频 守则: $(文档).ready(函数(){ //获取媒体-禁用自动播放(音频或视频) var media=$('视频1,'视频2,'视频3,'视频4,'视频5'); var公差像素=10; 函数checkMedia(){ //从上到下获取当前浏览器 var scrollTop=$(窗口).scrollTop()+公差像素; var scrollBottom=$(窗口).scrollTop()+$(窗口).height()-公差像素; //

我需要一个特别的JS的帮助,我用它来播放HTML5视频

守则:

$(文档).ready(函数(){
//获取媒体-禁用自动播放(音频或视频)
var media=$('视频1,'视频2,'视频3,'视频4,'视频5');
var公差像素=10;
函数checkMedia(){
//从上到下获取当前浏览器
var scrollTop=$(窗口).scrollTop()+公差像素;
var scrollBottom=$(窗口).scrollTop()+$(窗口).height()-公差像素;
//如果($(窗口).scrollTop()>$(窗口).height()-100){
媒体。每个(功能(索引,el){
var yTopMedia=$(this).offset().top;
var yBottomMedia=$(this).height()+yTopMedia;
如果(scrollTopyTopMedia){
$(此).get(0.play();
}否则{
$(this.get(0.pause());
}
});
//}
}
$(文档)。在('scroll',checkMedia)上;
});

您可以使用变量来标记视频是否已播放。如果已播放,请不要再次播放:

$(文档).ready(函数(){
//获取媒体-禁用自动播放(音频或视频)
var media=$('视频1,'视频2,'视频3,'视频4,'视频5');
var公差像素=10;
var hasPlayMap={};
函数checkMedia(){
//从上到下获取当前浏览器
var scrollTop=$(窗口).scrollTop()+公差像素;
var scrollBottom=$(窗口).scrollTop()+$(窗口).height()-公差像素;
//如果($(窗口).scrollTop()>$(窗口).height()-100){
媒体。每个(功能(索引,el){
var yTopMedia=$(this).offset().top;
var yBottomMedia=$(this).height()+yTopMedia;
如果(scrollTopyTopMedia){
var thisId=$(this.attr(“id”);
if(hasPlayMap[thisId]){
返回;
}
hasPlayMap[thisId]=true;
$(此).get(0.play();
}否则{
$(this.get(0.pause());
}
});
//}
}
$(文档)。在('scroll',checkMedia)上;
});

对不起,我知道这看起来很像NewToJS在评论中的回答,遗憾的是,我也想到了同样的事情

由于这是您想要的效果,请不要绿色勾选此项,因为NewToJS首先得到了答案(当然,也就是说,如果您计划的话)

您可以设置视频的ONED事件以设置视频的onplay事件:

document.querySelector('video').forEach(function(element) {
    // Set the onend event to...
    element.onend = function() {
        // ...set the onplay event to...
        this.onplay = function() {
            // ...stop playing video when the video starts playing
            this.pause();
            this.currentTime = 0;
        };
    };
});
纯jQuery版本:

$('video').each(function(ix, ele) {
    ele.addEventListener('end', function() {
        this.addEventListener('play', function() {
            ele.pause();
            ele.currentTime = 0;
        });
    });
});

谢谢然而,当引入额外的视频时,伟大的解决方案似乎不起作用。这是我正在处理的页面()@TomCat只需使用hasPlayMap={}和if(hasPlayMap[videoId])。。。我能解决你的问题。我刚刚更新了帖子,你可以使用它。对不起,这里是JS noob。我该如何实现呢?@bronzeman与其将变量设置为
true/false
,为什么不在if条件下使用
this.end
?它将返回相同的东西…@NewToJS,它正按照我所需要的方式工作。。。非常感谢!