播放暂停 html5 视频 javascript

Posted

技术标签:

【中文标题】播放暂停 html5 视频 javascript【英文标题】:play pause html5 video javascript 【发布时间】:2012-05-06 20:38:54 【问题描述】:

我有一个功能,当我点击播放器中显示的海报图像时播放视频,它似乎工作:

var video = document.getElementById('player');
video.addEventListener('click',function()
    video().play();
,false);

html5 视频标签中,我有类似的内容: id="player" onclick="this.play();"

问题是,如果我在视频控件上按下暂停,它实际上会暂停,这很好,但是如果我按下视频控件上现在的播放按钮,我可以看到按钮更改为再次暂停一秒钟然后它再次回到播放按钮。所以我按下播放键,它只播放几帧,然后回到暂停状态。让它再次播放的唯一方法是点击视频观看区域。

使用控制栏播放/暂停按钮时如何使其停止返回暂停,以及单击视频查看区域时如何使其暂停?

我尝试了以下方法,但它不起作用:

var video = document.getElementById('player');
video.addEventListener('click',function()
    if(video.paused)
        video().play();
    else
        video.pause();
    
,false);

我想要在实际观看区域上播放视频的原因是在android上很难找到微小的控制栏播放按钮,因为它太小了,人们只需按下观看就更容易了地区让它去。在 Firefox 中,当我点击查看区域和暂停时,视频播放器会播放,这正是我想要发生的事情,它也不需要任何 javascript 就可以做到这一点。在 Android 中,当我按下查看区域时,视频根本不会播放。所以我基本上是在尝试强制 Android 浏览器像 Firefox 原生那样运行。

【问题讨论】:

请通过此链接***.com/questions/4646998/… 我经历过,没有什么可以帮助解决这个问题 【参考方案1】:
$('#play-pause-button').click(function () 
   var mediaVideo = $("#media-video").get(0);
   if (mediaVideo.paused) 
       mediaVideo.play();
    else 
       mediaVideo.pause();
  
);

我在 jQuery 中完成了这项工作,既简单又快速。要尝试它,您只需要使用视频标签的 ID 和播放/暂停按钮即可。

编辑: 在原生 JavaScript 中: 视频不是函数,而是 DOM 的一部分,因此使用

 video.play(); 

代替

video().play() **wrong**

【讨论】:

@SaurabhLP Apple 已于 2012 年停止使用 Windows 版本的 Safari,所以我认为我们不必再为此担心了。【参考方案2】:

在我看来,视频不是一个函数,那你为什么有括号?那是你的错误。

所以不要使用video(),而是使用video

【讨论】:

【参考方案3】:

在 Chrome v22、Firefox v15 和 IE10 中对我来说这种工作(使用 jquery):

$('video').on('click', function (e) 
    if (this.get(0).paused) 
        this.get(0).play();
    
    else 
        this.get(0).pause();
    
    e.preventDefault();
);

preventDefault 在这里停止了您看到的跳帧问题,但随后它破坏了控制部分上的其他按钮,例如全屏等。

看起来没有什么容易的,为什么要这样做?我原以为供应商会默认点击播放,这似乎是合乎逻辑的事情。 :|

【讨论】:

【参考方案4】:

这是最简单的解决方案

this.on("pause", function () 
    $('.vjs-big-play-button').removeClass(
        'vjs-hidden'
    ).css('display', 'block');
    this.one("play", function () 
        $('.vjs-big-play-button').addClass(
            'vjs-hidden'
        ).css('display', '');
    );
);

【讨论】:

最简单的解决方案?这假设您使用的是第三方库 video.js。你的答案的一些背景会很好。【参考方案5】:
$('#video-id').click(function() 
    // jQuery sets this as the DOM element that triggered the event
    // no need to wrap it in jQuery $(this) and unwrap it again $(this).get(0)
    if (this.paused) 
        this.play();
     else 
        this.pause();
    
);

【讨论】:

在 Firefox 中损坏;见***.com/questions/28353352/…【参考方案6】:

我相信,这是编写您想要实现的目标的最简单、最简单的方法:

var myVideo = document.getElementById('exampleVideo');

            $(myVideo).click(function toggleVideoState() 
                if (myVideo.paused) 
                  myVideo.play();
                  console.log('Video Playing');
                 else 
                  myVideo.pause();
                  console.log('Video Paused');
                
              );

当然,登录控制台只是为了说明。

【讨论】:

【参考方案7】:
            function myFunction() 
            var playVideo = document.getElementById('myVideo');
            var button = document.getElementById('myBtn');

            if (playVideo.paused) 
               playVideo.play();
                button.innerHTML= "pause";
             else 
               button.innerHTML= "play";
               playVideo.pause();
            
            ;

【讨论】:

【参考方案8】:
document.getElementById("play").onclick = function()
    if (document.getElementById("videoPlay").paused)
        document.getElementById("videoPlay").play();
     else 
        document.getElementById("videoPlay").pause(); 
    


【讨论】:

写一些解释和一些代码总是一个好习惯。谢谢! 添加上下文。 (来自评论)。

以上是关于播放暂停 html5 视频 javascript的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 检测 HTML5 视频播放/暂停状态

使用 AngularJS 控制 HTML5 视频/音频播放器的播放和暂停

Html5 视频。暂停 20 秒后重置播放器

HTML5 视频播放/暂停控件仅在 Safari 浏览器中不起作用

播放 Html5 视频并在特定时间点暂停

获取正在播放的 html5 视频的暂停/突然结束时间