【问题标题】:How can I prevent a user from fast-forwarding/scrubbing/skipping ahead in an embedded YouTube video?如何防止用户在嵌入的 YouTube 视频中快进/擦洗/跳过?
【发布时间】:2019-06-23 03:52:17
【问题描述】:

我想向用户展示一个嵌入的 HTML YouTube 视频,并防止他们快进或跳到视频的结尾。我可以通过使用 YouTube 的 API 删除播放器控件(参见代码 sn-p)来获得大部分的方法,但是在 iOS 上,仍然可以通过捏合让视频在本机播放器(连同它的擦洗控件)中运行- 缩放。有什么简单的方法可以做到这一点吗?

我应该注意,我也尝试过使用 .m4v 视频作为文件,而不是在 HTML5 中提供更多选项,但这对我来说现在不是一个理想的解决方案(带宽和下载问题)。

var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '390',
          width: '640',
          videoId: 'KjLYjf4B7xQ',
          events: {
            'onReady': onPlayerReady
          },
         playerVars: {rel: 0, 
                      showinfo: 0, 
                      controls: 0, 
                      disablekb: 1,
                      modestbranding: 1,
                      cc_load_policy: 1,
                      playsinline: 1}
        });
      }

      function onPlayerReady(event) {
        event.target.playVideo();
      }
<div id="player"></div>

(我尝试让它作为 sn-p 运行,但出现跨域错误。)

感谢任何帮助。谢谢!

编辑:除了 Mauricio 的回答之外,我还必须添加一个按钮来启动视频,因为用户无法在视频内部单击来启动它。像这样的:

  function onPlayerReady(event) {
    event.target.playVideo();

    var playButton = document.getElementById("play-button");
    playButton.addEventListener("click", function() {
       player.playVideo();
    });
  }

对于按钮:

<button id="play-button">Play Video</button>

【问题讨论】:

  • 您能否分享您遇到的确切错误,以便社区可以检查您的问题?
  • 没有错误,我只是想防止用户刷视频。
  • 如何嵌入视频文件而不是 YouTube 视频?

标签: javascript youtube youtube-api html5-video


【解决方案1】:

如果您需要禁用用户与视频的交互,您可以在包含 iframe 的 div 中添加 css 样式。

在这种情况下,添加以下 css 样式:

pointer-events: none

所以,CSS 如下:

#player {
  pointer-events: none;
}

【讨论】:

  • 阻止用户全屏查看;但是,他们需要单击才能开始播放视频,并且无法使用此解决方案。我可以添加一个按钮来实际启动视频,这似乎可以使用 Safari 和 Chrome 在 iOS 12 上运行,这并不完美,但允许他们启动视频。我会更新我的问题并给你信用。
  • @Steve 感谢您的反馈。为避免用户点击视频进行播放,您还可以在playerVars 对象中添加'autoplay': 1。我尝试在 jsfiddle (当我试图回答你的问题时),但我无法设置自动播放工作。这是一个jsfiddle,自动播放设置为1。由于参数的顺序,我相信我无法自动播放视频...
  • 感谢@Mauricio,但设置自动播放在移动设备上不起作用,他们仍然需要点击才能开始播放视频,请参阅stackoverflow.com/a/48442630/7179741
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 2018-02-07
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多