【问题标题】:can't stop deeply nested youtube video无法停止深度嵌套的 youtube 视频
【发布时间】:2012-12-28 00:07:24
【问题描述】:

当模态框关闭时,我似乎无法让 YouTube 视频停止播放。视频消失,但音频继续播放。

我已经尝试了许多其他问题的解决方案,但似乎没有任何效果。我认为这可能是因为我的视频嵌套很深,我无法定位它。和/或因为 iframe 具有相同名称的元素 ID。 (不要让我开始。)

这是 DOM 的简化视图:

html
  head
  body
    <div id="popoverview">
      <div id="popoveritem">
        <iframe id="popoverframe">   <!-- this is our modal -->
          #document
            html
              head
              body
                <div id="popovercontainer">
                  <div id="popover_upc_video">
                    <div id="current_video">
                      <div id="player">
                        <iframe id="popoverframe">
                          #document  <!-- this is from youtube -->
                            html
                              head
                              body
                                <div id="player">
                                  <div id="playercontainer">
                                    <embed id="video-player-flash">  <!-- the video -->

以下是将 youtube 视频(包括 ?enablejsapi=1)插入模态的 javascript:

document.getElementById('player').innerHTML = '<iframe id="youtubevideo" width="620" height="376" src="http://www.youtube.com/embed/'+youtube_id+'?enablejsapi=1?hl=en&rel=0&fs=1&modestbranding=1" frameborder="0" allowfullscreen>Error?</iframe>';

这里有一些关闭模态的函数。问题是音频一直在播放。错误信息是 Uncaught TypeError: Object [object Object] has no method 'stopVideo'。

var myPlayer = $('#player > #video-player-flash');
myPlayer.stopVideo();

我尝试了很多定位方法,但没有任何效果。

感谢您的帮助。 查理马吉

【问题讨论】:

  • 你可能需要这样做:$("#popoverframe").contents().find("#popoverframe").contents().find("#player #video-player-flash").stop()
  • 如果#video-player-flash#playercontainer 的子级,$('#player &gt; #video-player-flash'); 也是不正确的。应该是$('#player #video-player-flash');
  • 不。不会改变任何东西。基于此的各种组合也不起作用。

标签: jquery iframe youtube


【解决方案1】:

你有一个 jQuery 对象设置为 myPlayer 而不是 DOM 节点。

var myPlayer = $('#player > #video-player-flash')[0];
myPlayer.stopVideo();

看到这个帖子:How can I stop a video with Javascript in Youtube?

【讨论】:

  • @ryan -- 更改了错误消息但没有解决问题。新错误:未捕获的类型错误:无法调用未定义的方法“stopVideo”
  • 如果您在 jsfiddle 上发布了一个演示该问题的最小实现,将会很有帮助。您可能还想使用 console.log 来查看您选择的元素是否是正确的嵌入元素。
  • @ryan——这有一堆 php 包含和数据库搜索。简化它以制作小提琴将无济于事。当我通过第一个 iframe 时,Console.log 就空了。这就是我转向 stackoverflow 的原因之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 2011-10-04
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
相关资源
最近更新 更多