【问题标题】:Pause Multiple HTML5 Videos暂停多个 HTML5 视频
【发布时间】:2010-09-09 11:44:12
【问题描述】:

我在 http://ghostpool.com/wordpress/phideo 的滑块中有多个 HTML5 视频,当我单击任何滑块按钮时,第一个视频会使用以下 onclick 函数暂停。

<a href="#" onclick="pausePlayer();">LINK</a>


var htmlPlayer = document.getElementsByTagName('video')[0];

function pausePlayer() {
  htmlPlayer.pause();
}

但是,当单击滑块按钮时,第二个视频不会暂停。我假设上面的 Javascript 不适用于多个视频?

编辑:此外,如果单击视频元素本身,我想切换播放和暂停功能。我正在使用此代码,但它会立即播放和停止所有视频。我认为我没有正确循环它:

function togglePlayer() {

for(var i = 0; i < htmlPlayer.length; i++){

    if ( htmlPlayer[i].paused || htmlPlayer[i].ended ) {    

        if ( htmlPlayer[i].ended ) { htmlPlayer[i].currentTime = 0; }
        htmlPlayer[i].play();

      }  else { 

      htmlPlayer[i].pause();

    }

}
}

【问题讨论】:

    标签: javascript video html


    【解决方案1】:

    这显然是行不通的,因为你只得到getElementsByTagName 返回的数组中的第一个元素。 [0] 部分访问数组中的第一个元素。您想要做的是使用循环遍历所有这些,如下所示:

    var htmlPlayer = document.getElementsByTagName('video');
    
    function pausePlayer() {
      for(var i = 0; i < htmlPlayer.length; i++){
        htmlPlayer[i].pause();
      }
    }
    

    编辑

    关于您的第二个问题 - 您可以尝试使用它:

    for(var i = 0; i < htmlPlayer.length; i++){
        htmlPlayer[i].onclick = function() {
            if ( this.paused || this.ended ) {    
                if ( this.ended ) { this.currentTime = 0; }
                this.play();
            }  else { 
                this.pause();
            }
        }
    }
    

    this 在事件处理程序中应该引用调用它的元素。

    【讨论】:

    • @蒋毅 干得漂亮。谢谢你。我有另一个相关问题(原始帖子也更新了问题)。本质上,如果单击视频元素本身,我想切换播放和暂停功能。我正在使用此代码(请参阅帖子),但它会立即播放和停止所有视频。我假设我没有正确循环它。
    • @蒋毅 谢谢回复。我无法完成这项工作。这可以与多个视频一起使用,还是我需要为每个视频使用此功能?我不能像上面的暂停函数那样将它引用到htmlPlayer 变量吗?
    • @ghostpool 我又更新了答案。您可能希望尝试使用此方法附加事件处理程序,而不是使用内联事件。您不能使用该变量,因为它本质上是一个包含该页面上所有视频的数组,因此无论您对该数组做什么,您都会更改视频的所有实例。
    • @蒋毅:这行得通。 :D 但是我需要先单击视频,然后再次单击它才能播放,就好像在第一次单击之前视频不处于正确状态一样。也许它与 DOM 属性有关 `this.paused || this.ended` 还是 onclick 事件?
    猜你喜欢
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多