【问题标题】:Embedded YouTube video keep playing on closed container嵌入的 YouTube 视频继续在封闭的容器上播放
【发布时间】:2015-10-27 03:54:07
【问题描述】:

我在一个灯箱上工作,这是一个通过单击 jquery 上的元素打开的窗口。
在图片上效果很好,但如果我打开 YouTube 视频并播放它,在关闭窗口(显示:无)后,视频会继续在后台播放..
我用this tutorial 做灯箱。
YouTube 视频作为 iframe 嵌入。

关闭窗口

$(".js-modal-close, .modal-overlay").click(function() { $(".modal-box, .modal-overlay").fadeOut(500, function() { $(".modal-overlay").remove(); }); });

如何解决我的问题?

【问题讨论】:

  • 那是什么?请在 jsFiddle.net 上做一个演示或至少提供 youtube iframe 的正确代码。
  • 对不起@zer00ne。你去吧。 jsfiddle.net/Ljmxj8ue

标签: javascript jquery html css youtube


【解决方案1】:

步骤 1. 使用 enablejsapi=1 启用 iframe API 并将 id 添加到 iframe:

<iframe id="player" src="https://www.youtube.com/embed/MxMBueIjtv0?enablejsapi=1" frameborder="0" allowfullscreen></iframe>

第 2 步。加载 API 并使用第 1 步中的 id 创建一个播放器。在这个演示中,我使用了player(可能是一个糟糕的选择):

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() {
  /* probably should tie into the `onReady` event,
     but for this demo's purpose it's unnecessary.
     the video will probably be ready by the time
     you get to the close button. */
  player = new YT.Player('player');
}

步骤 3. 在您的关闭模型 sn-p 中调用 stopVideo 函数:

$(".js-modal-close, .modal-overlay").click(function() {
  player.stopVideo(); /* you can optionally also set the video back
                         at the beginning with `player.seekTo(0);` */
  $(".modal-box, .modal-overlay").fadeOut(500, function() {
    $(".modal-overlay").remove();
  });
});

文档:https://developers.google.com/youtube/iframe_api_reference
演示:http://jsfiddle.net/4f5dksj5/

【讨论】:

  • 哦,一件事。如果我在页面上添加更多视频,只是第一站。因为我只会使用一个 id,有可能吗? (或者使用一个类?似乎不起作用)
  • 看起来您可以将 DOM 元素而不是 id 作为字符串传递:jsfiddle.net/4f5dksj5/1。只需使用 jQuery 获取元素并使用 .get(0) 传递 DOM 节点本身。例如player = new YT.Player($('.some-class:first').get(0)); :first 在这里是多余的,但我将其保留以显示正在使用的更复杂的查询。
  • 更好的例子:jsfiddle.net/4f5dksj5/2(它使用“玩家”作为一个类而不是一个 ID)
  • @user5441400 抱歉。已经去睡觉了。基本上,原始示例将播放器存储在全局变量中,因为它很容易获取。您现在需要的是让每个玩家都具有特定的模式。在下一个演示中,我将播放器存储在 .modal-box 的 jQuery 数据属性对象中。现在,当单击关闭按钮时,该函数会找到自己的播放器并停止该播放器。 jsfiddle.net/4f5dksj5/4
  • 非常感谢,你让我开心。我努力工作了这么多小时...谢谢。
猜你喜欢
  • 2015-02-26
  • 2018-09-14
  • 1970-01-01
  • 2012-05-20
  • 2011-01-21
  • 2013-07-27
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多