【问题标题】:Youtube video on click not closing after I hit close button点击关闭按钮后,Youtube 视频点击不关闭
【发布时间】:2019-06-21 16:42:40
【问题描述】:

我有一个视频想在网站上展示给用户,我创建了一个按钮,他们点击它并在弹出窗口中显示一个 youtube 视频,但是当我关闭它时,它仍然在选项卡中显示“正在播放音频”你仍然可以听到视频。当他们点击 X 或其他任何地方(他们也可以通过点击任何地方关闭它)来实际停止视频及其音频时,我该如何实现。

   $(document).ready(function() {
  $('#headerVideoLink').magnificPopup({
type:'inline',
midClick: true // Allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source in href.
  });         
});
   

 #headerPopup{
  width:75%;
  margin:0 auto;
}

#headerPopup iframe{
  width:100%;
  margin:0 auto;

}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/jquery.magnific-popup.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" rel="stylesheet"/>

 <a href="#headerPopup" id="headerVideoLink" target="_blank" class="btn btn-white btn-outline-white px-4 py-3 popup-modal"><span class="icon-play mr-2"></span>Watch Video</a></p>

      <div id="headerPopup" class="mfp-hide embed-responsive embed-responsive-21by9">
      <iframe class="embed-responsive-item" width="854" height="480" src="https://www.youtube.com/embed/qN3OueBm9F4?autoplay=1" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
      </div> 

任何帮助都意义重大,谢谢!

【问题讨论】:

  • 你有弹出窗口的代码吗?我相信这是一个 iframe?
  • 我不知道为什么它在这里不起作用,在我的浏览器中它播放视频,而在代码截图中它不起作用
  • 当你打开你的模态框时,它会创建 iframe,但当你关闭它时没有什么可以破坏它。我认为正在发生的事情是,当您加载页面时,iframe 会加载到 dom 中,当您打开模态框时,它会启动视频,当您关闭模态框时,它仍然存在于 DOM 中但随着播放选项。你应该有一个功能,当你关闭它时重置你的模式。您可以通过将模式的 html 设置为之前的状态或通过销毁它来实现这一点,而不是让 iframe 静态您可以动态生成它。
  • 嗯,你能帮帮我吗?
  • 您可以尝试在关闭事件中清空 iframe 源,例如 $('iframe').attr('src', '');

标签: javascript jquery html css


【解决方案1】:

如果您使用 MagnificPopup 插件的 iframe 内容类型怎么办? 所以它看起来像这样:

$(document).ready(function () {
  $('#headerVideoLink').magnificPopup({
    type: 'iframe',
    midClick: true,
    items: {
      // HTML markup of popup, `mfp-close` will be replaced by the close button
      markup: '<div class="mfp-iframe-scaler">' +
        '<div id="headerPopup" class="mfp-hide embed-responsive embed-responsive-21by9">' +
        '<iframe class="embed-responsive-item" width="854" height="480" frameborder="0" allow="autoplay;     encrypted-media" allowfullscreen></iframe>' +
        '</div>',
      patterns: {
        youtube: {
          // URL that will be set as a source for iframe.
          src: 'https://www.youtube.com/embed/qN3OueBm9F4?autoplay=1'
        }
      },
      // Templating object key. First part defines CSS selector, second attribute.
      // "iframe_src" means: find "iframe" and set attribute "src".
      srcAction: 'iframe_src',
    }
  });
});

https://dimsemenov.com/plugins/magnific-popup/documentation.html#iframe-type

或尝试使用您的原始 Javascript 清除 iframe 源:

$(document).ready(function () {
  $('#headerVideoLink').magnificPopup({
    type: 'inline',
    midClick: true,
    callbacks: {
      open: function () {
        // Will fire when this exact popup is opened
        // this - is Magnific Popup object
      },
      close: function () {
        // Will fire when popup is closed
        $('#headerPopup > iframe').attr('src', '');
      }
    }
  });
});

【讨论】:

  • 我用你的替换了我的 jquery 代码,它根本没有打开视频。我做错了什么?
  • 我必须说我没有使用这个插件的经验,我没有测试它,我只是检查了文档。也许尝试调整一些属性。例如。 src: '//www.youtube.com/embed/qN3OueBm9F4' 代替,如文档中所写?
  • 您是否尝试过清除 iframe 源?示例添加到我的答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
相关资源
最近更新 更多