javascript - 当按下 "Picture in Picture"键时,jQuery 强制 html5 视频播放 "i"

标签 javascript jquery

我可以使用 jquery(或 javascript)强制 html5 video 播放器以画中画 模式播放吗?(下图)

picture in picture .

这是我使用 jquery 3.3.1(由 Google 托管)的个人网站。现在我设法使用 space 栏来播放/暂停。到目前为止,这是我的代码:

<video id="player">
   <!-- source -->
</video>
<script>
player = $('#player')[0];

var player = $('#player')[0];
$(window).keydown(function(e) {
    switch(e.which){
        case(32):
            if(player.paused){
                player.play();
            } else{
                player.pause();
            }
        break; 
    }
});
</script>

这是 CodePen 上的代码.

keydown 上的 i 键是 73

最佳答案

这是可能的,虽然很明显only in browsers which support PIP (在回答这个问题时,只有 Chrome 70 和 71)。

要让它工作,请在您的开关 中监听i 键。然后就可以在播放器上调用requestPictureInPicture()让播放器进入画中画模式。要在再次按下 i 时使切换起作用,您需要检查 documentpictureInPictureElement 属性。如果它返回 true,那么 PIP 模式已经在使用中,您可以通过调用 document.exitPictureInPicture() 来结束它,如下所示:

var player = $("#player")[0];

$(window).keydown(function(e) {
  switch (e.which) {
    case 32:
      player.paused ? player.play() : player.pause();
      break;
    case 73:
      if (player.requestPictureInPicture) { // feature detection to stop errors in unsupported browsers
        if (document.pictureInPictureElement) {
          document.exitPictureInPicture();
        } else {
          player.requestPictureInPicture();
        }
      }
      break;
  }
});
video {
  width: 450px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<video id="player" controls>
  <source src="https://www.w3schools.com/howto/rain.mp4" type="video/mp4">
</video>

这里需要注意的是,在按下 i 后,焦点将转移到 PIP 窗口,因此再次按下 i 似乎什么都不做,直到您单击浏览器再次打开窗口以返回焦点,以便 keydown 监听器可以生效。

关于javascript - 当按下 "Picture in Picture"键时,jQuery 强制 html5 视频播放 "i",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54005311/

相关文章:

javascript - onClick 的 jQuery 动画不适用于连续点击

javascript - 如果未提交表单,则触发 onbeforeunload

javascript - ExpressJS - 如何跳转到下一个已定义初始 url 的中间件

jquery - 您认为 jQuery Mobile 的标记在语义上是否完美,我可以修改吗?

jquery - Morris.JS X 轴标签高度

jquery - 动画无限循环

javascript - Canvas 2d 上下文的measureText() 方法有时会给出不同的宽度

javascript - 为什么 AngularJS 的 ng-bind-html 指令会改变 div 的溢出行为?

javascript - 使用延迟链接循环与多个 ajax 调用

php - jQuery 网络摄像头插件 - 如何输出更大的图像?