jQuery嵌入youtube IE问题

时间:2012-10-25 22:45:25

标签: jquery

我一直在研究这里的自定义图像滑块:

JQuery的

$(function(){
      $('.cont:gt(0)').hide();
      $("#parent").on("mouseenter", ".extraContent div", function(){
           var ind = $(this).index();
           $("#parent").find(".cont").stop().fadeTo(600,0,function(){
               $('#parent').find('.cont').eq(ind).stop().fadeTo(300,1);
           });
        });
        $('#parent .extraContent').on('click',function(){
             window.location=$(this).find("a").attr("href"); 
             return false;
        });
    });

CSS

​#parent { width:400px; margin:auto}
.mainContent { width:430px; height:300px; border:1px solid #000;padding:5px; }
.extraContent {overflow:auto; width:450px;}
.extraContent div{float:left; width:90px; height:90px; border:1px solid #00F; margin:5px; padding:5px }
.extraContent div:hover { border:1px solid #0F0;cursor:pointer }
.cont{
   position:absolute;
}

HTML

<div id="parent">
    <div class="mainContent">
        <div class="cont"> Content 1....</div>
        <div class="cont"> Content 2....</div>
        <div class="cont">Content 3...<br /><iframe width="267" height="200" src="http://www.youtube.com/embed/6tlQn7iePV4?rel=0" frameborder="0" allowfullscreen></iframe></div>
        <div class="cont"> Content 4....</div>  
    </div>
    <div class="extraContent">
        <div><p>1 Custom content here <br /> <a href="">Some link</a></p></div>
        <div><p>2 Custom content here <br /> <a href="">Some link</a></p></div>
        <div><p>3 Custom content here <br /> <a href="">Some link</a></p></div>
        <div><p>4 Custom content here <br /> <a href="">Some link</a></p></div>
    </div>
</div>​

我的问题是,如果我使用iframe在网站上直接嵌入YouTube视频,那么它在Chrome中可以很好地转换,但Firefox和IE只是直接显示视频,每个幻灯片/ div出现在视频下,这是一个已知问题,没有人知道我可以获得IE&amp; FF表现。

P.S。因为这将在内容管理系统中,用户可以嵌入视频的唯一方式是使用youtube中的默认代码。

FIDDLE HERE

1 个答案:

答案 0 :(得分:1)

这是一个已知问题,我将其称为“超级z-index”。这是一个闪存相关的问题。如果您使用HTML5播放器,则不会发生。基本上你必须在你的Youtube网址中再设置一个参数:

http://www.youtube.com/embed/6tlQn7iePV4?rel=0&amp;wmode=transparent
                                              ^--------------------^

顺便说一下,如果你想让你的标记保持干净,你可以使用这个将你的Youtube链接转换成iframe的snnipet,包括z-index修复。

function embedYoutube(link, ops) {

  var o = $.extend({
    width: 480,
    height: 320,
    params: ''
  }, ops);

  var id = /\?v\=(\w+)/.exec(link)[1];

  return '<iframe style="display: block;"'+
    ' class="youtube-video" type="text/html"'+
    ' width="' + o.width + '" height="' + o.height +
    ' "src="http://www.youtube.com/embed/' + id + '?' + o.params +
    '&amp;wmode=transparent" frameborder="0" />';
}

有关它的更多信息on this article