【问题标题】:Hide/show in JavaScript - stop playing YouTube iframe video [closed]在 JavaScript 中隐藏/显示 - 停止播放 YouTube iframe 视频 [关闭]
【发布时间】:2012-02-14 10:49:38
【问题描述】:

我已经使用 iframe 功能嵌入视频,我正在通过 JavaScript 隐藏/显示内容和视频。

我有一个问题。当我在第一个视频上按播放,然后在不停止第一个视频的情况下单击下一个,第一个继续播放。

在显示新内容时,我可以如何在“背景”中停止视频?

$(function(){
    $("#link1").click(show1);
});

function show1(){
    $("#pic1").fadeIn();
    $("#pic2").hide();
}

我只是使用这个简单的JavaScript函数,其中“pic1”和“pic2”的id是div的id,视频是嵌入的。

我似乎无法让它工作。我试图删除,但如果你愿意,你将无法再次看到视频。

【问题讨论】:

  • @xbonez 你的问题不是关于 framed youtube 视频。
  • 我试过了,但我对切换视频的东西有点困惑。我有大约 7 个视频,这意味着 7 个 diff id 的视频和 7 个 id 的缩略图。那不是很多代码吗? [andreasbense.dk] 在这个页面上,在“视频”下。
  • 我修好了。在我的所有链接中添加了“onClick="player.stopVideo();”。它在 Firefox 中有效。不确定它在谷歌浏览器中是否有效。

标签: javascript iframe youtube youtube-api youtube-javascript-api


【解决方案1】:

这是 YouTube 播放器 API 的实现,无需加载其他文件。要完成这项工作,您必须在 <iframe> 的所有 src 属性后加上 ?enablejsapi=1

示例(为了便于阅读,我将代码分成几行,您可以放心地省略换行符):

<div id="pic3">
    <iframe width="640" height="390"
            src="http://www.youtube.com/embed/Xub4grFLbQM?enablejsapi=1"
            frameborder="0" allowfullscreen></iframe>
</div>

<div id="tS2" class="jThumbnailScroller">
.. Removed your code for readability....
    <a href="#vid3" id="link3"><img src="images/thumbs/player2.jpg" height="85"/></a>
    ....

JavaScript + jQuery 代码:

$(function() {
    /* elt: Optionally, a HTMLIFrameElement. This frame's video will be played,
     *       if possible. Other videos will be paused*/
    function playVideoAndPauseOthers(frame) {
        $('iframe[src*="http://www.youtube.com/embed/"]').each(function(i) {
            var func = this === frame ? 'playVideo' : 'pauseVideo';
            this.contentWindow.postMessage('{"event":"command","func":"' + func + '","args":""}', '*');
        });
    }
    $('#tS2 a[href^="#vid"]').click(function() {
        var frameId = /#vid(\d+)/.exec($(this).attr('href'));
        if (frameId !== null) {
            frameId = frameId[1]; // Get frameId
            playVideoAndPauseOthers($('#pic' + frameId + ' iframe')[0]);
        }
    });
});

【讨论】:

  • 你太棒了!谢谢:-D
  • 这似乎不再起作用,我收到此错误:Blocked a frame with origin "http://www.mywebsite.com" from accessing a frame with origin "http://www.youtube.com". Protocols, domains, and ports must match. 尝试访问 contentWindow 属性时
  • @bfred.it 该方法仍然有效,否则许多其他脚本(包括官方 YouTube iframe API)会中断。你用的是什么代码?
  • 转到here 并在控制台中输入document.querySelectorAll('#video iframe')[0]。仅此一项就会导致该错误……但document.querySelectorAll('#video iframe')[0].contentWindow.postMessage 不会。去搞清楚。我的错,我想这个功能可以工作。
猜你喜欢
  • 2018-05-27
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
相关资源
最近更新 更多