31

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

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 一样运行。

4

8 回答 8

53
$('#play-pause-button').click(function () {
   var mediaVideo = $("#media-video").get(0);
   if (mediaVideo.paused) {
       mediaVideo.play();
   } else {
       mediaVideo.pause();
  }
});

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

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

 video.play(); 

代替

video().play() **wrong**
于 2014-01-09T07:21:33.417 回答
11

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

所以video()不仅仅是使用video

于 2012-06-04T16:34:07.547 回答
2

在 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停止了您看到的跳帧问题,但随后它破坏了控制部分上的其他按钮,例如全屏等。

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

于 2012-09-27T13:27:19.953 回答
2

这是最简单的解决方案

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', '');
    });
});
于 2015-10-21T08:30:22.590 回答
0
$('#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();
    }
});
于 2014-07-23T12:38:23.320 回答
0

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

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');
                }
              });

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

于 2017-05-09T06:43:33.627 回答
0
            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();
            }
            };
于 2019-07-18T05:07:24.327 回答
-2
document.getElementById("play").onclick = function(){
    if (document.getElementById("videoPlay").paused){
        document.getElementById("videoPlay").play();
    } else {
        document.getElementById("videoPlay").pause(); 
    }
}

于 2019-08-01T05:48:19.880 回答