首页 文章

Internet Explorer和Firefox上的YouTube IFrame API

提问于
浏览
22

更多的是“回答”而不是“问题”,但在其他地方没有找到这个我在这里发布 .

我在IE和Firefox的所有版本中初始化iFrame API时遇到了困难,并且有点自定义实现 . 基本上,它会加载API,但不会创建播放器对象 .

经过一些试验和错误后,我终于发现它无法正常工作,因为我传递给对象的 div ID已将其CSS可见性设置为 'none' . 一旦设置为 'visible' ,整个过程就有效了 . 之后我尝试将 div CSS设置为 'display:none' (应用程序要求视频在用户请求之前隐藏),这也导致iFrame API无声地失败(从不回拨 'onPlayerReady' ) .

所以,简而言之,当使用YouTube iFrame API初始化 div 时,你希望在以后保持隐藏状态,使用像绝对定位这样的CSS技术将其推离屏幕直到你以后需要它 . 此外,发现一旦玩家对象被初始化并且 'onPlayerReady' 被调用,你可以整天打开和关闭显示,一切都将按预期工作 .

2 回答

  • 1

    您应该将播放器变换器留空,例如

    <div class="myPlayerContainer"></div>
    

    当你想要显示它时只需将它附加到容器:

    $('#showVideoBtn').click(function(){
        $('.myPlayerContainer').show().append('~ code of youtube iframe ~');
    });
    
  • 1

    Yotam是对的,请看以下内容:

    HTML:

    <button onclick="toggleYoutube();">show / hide</button>
    <div id="youtube"></div>
    

    JS(使用jQuery):

    var visible = false;
    function toggleYoutube() {
        visible = !visible;
        if ( visible ) {
            $("#youtube").append( '<iframe id="video" width="640" height="360" src="http://www.youtube-nocookie.com/embed/cjvIeNt93nc?rel=0" frameborder="0" allowfullscreen></iframe>' );
        } else {
            $("#video").remove();
        }
    }
    

    查看完整代码http://jsfiddle.net/wFVhT/2/

相关问题