javascript - 如何创建全屏 youtube 嵌入视频点击 youtube 的 ytp-large-play-button 类?

标签 javascript jquery html css youtube

我想在用户单击 ytp-large-play-button 类的 svg 或嵌入的 youtube 视频时自动播放全屏视频。我怎么能在 jquery 中做到这一点?我不想点击“全屏”。对不起我的英语。

最佳答案

Google、Mozilla 等浏览器设计者在安全方面变得越来越偏执,这是有道理的;然而,它迫使我参与创造性的编程,让事情按应有的方式运作。

您忽略了两个主要的安全问题:

  1. YouTube 嵌入(技术上它是 iframe 而不是 embed 标签)不支持跨源。这意味着我不能在他们的 iFrame 中创建点击事件,除非黑掉你的网络浏览器。
  2. 全屏必须由可信 事件触发。受信任的事件必须由用户发起,例如 click

我们可以通过创建一个完全透明并位于播放器 (iframe#ytplayer) 之上的重叠 div (#wrapper) 来绕过这两个限制.我们可以在重叠的 div 上监听点击事件,然后从(可信的)点击事件请求全屏。我们还可以使用 YouTube 的 API 播放视频。

工作代码笔:https://codepen.io/anon/pen/dmGgmx

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://www.youtube.com/player_api"></script>
<div class="container">
  <div id="wrapper"></div>
  <div id="ytplayer"></div>
</div>

CSS

.container {
  position:relative;
  overflow:hidden;
  display:inline-block;
}

#wrapper {
  z-index:1;
  cursor:pointer;
  position: absolute;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100%;
}

JavaScript:

var player;
function onYouTubePlayerAPIReady() {
  player = new YT.Player('ytplayer', {
    height: '360',
    width: '640',
    videoId: 'M7lc1UVf-VE',
    events: {
      'onReady': onReady
    }
  });
}

function onReady() {
  $("#wrapper").click(function () {
    var iframe = $("#ytplayer")[0];
    player.playVideo();
    $(this).remove();
    var requestFullScreen = iframe.requestFullScreen || iframe.mozRequestFullScreen || iframe.webkitRequestFullScreen;
    if (requestFullScreen) {
      requestFullScreen.bind(iframe)();
    }
  });
}

关于javascript - 如何创建全屏 youtube 嵌入视频点击 youtube 的 ytp-large-play-button 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49270911/

相关文章:

在循环中添加的元素的 jQuery 宽度

jquery - 突出显示 jQuery 日期选择器日期

javascript - foreach $data 变量上的 ko.compulated 写入函数

javascript - 单击按钮时 addEventListener 无效

javascript - 在这里 map ,我如何添加一个新的用户界面按钮?

javascript - 使用 Nightwatchjs 检测视频播放

javascript - 如何在动态元素上添加单击事件或鼠标悬停(进入/更新/退出)?

javascript - 如何在 jQuery 中调用带有参数的 JavaScript 函数?

javascript - 我的 jquery 运行时未加载 Squarespace 表单(在 IE 中)

javascript - 如何在没有jQuery的情况下在IE中使用javascript触发元素的onchange事件