当视频播放器不在视野范围内时,将HTML5视频设置为PAUSE

时间:2012-02-21 19:18:12

标签: javascript html5 video html5-video

我想用javascript做这件事。我正在使用Hakim El Hattab的Reveal.js作为基础进行演示。

Reveal.js的工作方式是你正在查看的当前幻灯片有一个.present类,任何以前的幻灯片都有一个.past类,任何尚未进入视图的幻灯片都有一个.future类。

我希望自动将幻灯片集中的任何视频暂停到.past或.future。

我应该怎么做?

提前致谢!

** * ** * ** * 的** * 更新 * ** * ** * < / EM> ** * ****

所以感谢我在css-tricks forums上取得的一些方向,我能够使用getElementById来处理单个视频。

下面是我用来添加.past和.future类并同时暂停视频的javascript。

if( i < index ) {
    // Any element previous to index is given the 'past' class
    slide.setAttribute('class', 'past');
    document.getElementById('vid').pause();
}
else if( i > index ) {
    // Any element subsequent to index is given the 'future' class
    slide.setAttribute('class', 'future');
    document.getElementById('vid').pause();
}

我现在遇到的问题是如何将其应用于标签名称(即:视频)或可能是类。

3 个答案:

答案 0 :(得分:1)

现在您已发布了代码,因此更容易修复:

if( i < index ) {
    // Any element previous to index is given the 'past' class
    slide.setAttribute('class', 'past');
    var vids = document.getElementsByClassName("past");
    for (var i = 0; i < vids.length; i++) {
        vids[i].pause();
    }
}
else if( i > index ) {
    // Any element subsequent to index is given the 'future' class
    slide.setAttribute('class', 'future');
    var vids = document.getElementsByClassName("future");
    for (var i = 0; i < vids.length; i++) {
        vids[i].pause();
    }
}

看看是否有帮助。如果没有,您使用的是符合标准的现代浏览器吗? getElementsByClassName()是一项相对较新的功能。它适用于我最新版本的Chrome。

答案 1 :(得分:0)

我不知道setTimeout是否适用于此,但您可以尝试以下方法:

function PauseVids() {
    var vids = document.getElementsByClassName("past");
    var vids2 = document.getElementsByClassName("future");
    for (var i = 0; i < vids.length; i++) {
        vids[i].pause();
    }
    for (var i = 0; i < vids2.length; i++) {
        vids2[i].pause();
    }
}

// Within onLoad or $(document).ready()
setTimeout("PauseVids()", 1000);

告诉我这是否有效。

答案 2 :(得分:0)

@petschekr:猜这不行,因为过去的classname不仅设置为videoelements?!

我不知道你是如何揭示工作以及你正在使用什么样的玩家!但我的方式会像:

当前类只有一个文件,右(当前幻灯片)

a)定义类似于onChange函数(例如在每个更改页面+按键的按钮上)

b)在切换页面之前触发该功能

function onChange(){
       var currentSlice = document.getElementByClassName('present')  //get current html elemen
       var videoObjects = currentSlice.getElementsByTag('video')  //get videoelements here html5 video
       for each videoObj      
            videoObj.pause()

编辑:伪代码让你有个主意!