YouTube iframe wmode问题


134

结合使用JavaScript和jQuery,我在YouTube网站上添加了带有youtube网址的iframe,以在网站上显示视频,但是从youtube加载到iframe中的嵌入代码没有wmode =“ Opaque”,因此在页面上显示了模式框在youtube视频下方

任何想法如何解决问题?


这还是个问题吗?我以前使用过此解决方案,但无法在最新的Chrome / Firefox / IE中重现原始问题。
marcovtwout

Answers:


238

尝试添加?wmode=opaque到URL或&wmode=opaque如果已有参数。

如果它不起作用,请尝试使用它,&wmode=transparent它也将在IE浏览器中起作用。


1
真好!可以在Firefox和Chrome上使用,但是由于某些原因在IE上无法使用...任何想法吗?
danfromisrael

31
尝试改用& wmode = transparent
Shabith,2010年

29
“& wmode = xxxx”设置假定您已经在URL中传递了参数。我不是这种情况,因此我需要在URL中添加“?wmode = xxxx”。
马特·哈金斯

6
opaque和之间的差异transparentopaque应该表现得更好。
甜甜圈

3
Shabith-“ wmode = Opaque”应为“ wmode = opaque”(小写“ o”)
约翰·


18

如果您正在使用新的异步API,则需要添加参数,如下所示:

<!-- YOUTUBE -->
// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

// 3. This function creates an <iframe> (and YouTube player)
//    after the API code downloads.
var player;
var initialVideo = 'ApkM4t9L5jE'; // YOUR YOUTUBE VIDEO ID
function onYouTubePlayerAPIReady() {
    console.log("onYouTubePlayerAPIReady" + initialVideo);
    player = new YT.Player('player', {
      height: '381',
      width: '681',
      wmode: 'transparent', // SECRET SAUCE HERE
      videoId: initialVideo,      
       playerVars: { 'autoplay': 1, 'rel': 0, 'wmode':'transparent' },
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange
      }
    });
}

这基于google文档和此处的示例:http : //code.google.com/apis/youtube/iframe_api_reference.html


7
请注意,此ALSO还需要playerVars中的wmode。当它位于YT.Player下时,仅适用于HTML5播放器。将wmode添加到playerVars还会将该参数发送到Flash对象,该对象具有其z顺序问题。请参阅此处:groups.google.com/forum/?fromgroups#!topic/youtube-api-gdata / ...我将相应地编辑您的答案。
Dylan McCall

1
我尝试了一下,但没有成功。我还没有在YouTude文档中找到对wmode的任何引用。
sboisse

自从我第一次发布以来,链接已更改,设置wmode的方法也已更改。您可以立即通过playerVars设置任何Flash参数或youtube Player参数。我已经更新了上面的示例。
St鱼

加载整个API只是为了更改可以在URL中轻松更改的值是完全过头了。不要使用这个。
fregante

我们当中有些人在使用chromeless播放器,并且已经在使用JS API来控制UI。对于我们来说,这种解决方案完全是摇晃!谢谢
maxijb 2014年

8

?wmode=opaque尽管我尚未在IE中对其进行测试,但添加到URL似乎可以解决此问题。

对于那些对先前提出的解决方案感到麻烦的人,请注意,仅在您已经向URL提供其他参数的情况下,首字母“&”号才起作用。第一个参数必须带有一个初始问号:http://www.example.com?first=foo&second=bar


不管我要显示的视频是什么,我最初都会得到一个黑色的矩形。.结果测试机器没有安装闪光灯,并且安装闪光灯的对话框偏移太多!
Zeb

3

添加&amp;wmode=transparent到URL,就可以完成测试。

我在自己的wordpress插件YouTube短代码中使用了该技术

如果遇到任何问题,请检查其源代码。


在您添加URL后添加&amp; wmode = transparent解决了所有浏览器中的问题。感谢Tubal先生,干得好:)

1

提示!-确保您要在嵌入视频上方的元素上设置z-index。我添加了wmode查询字符串,但仍然无法正常工作...直到我调高了另一个元素的z-index。:)


0

&wmode=opaque不适用于我(chrome 10),但可以立即解决&amp;wmode=transparent此问题。


0

我知道这是一个老问题,但是仍然会在该问题的热门搜索中出现,因此我添加了一个新答案,以帮助那些为IE寻找问题的人:

添加&wmode=opaque到URL的末尾在IE 10中不起作用...

但是,添加?wmode=opaque就可以了!


在此处找到此解决方案:http : //alamoxie.com/blog/web-design/stop-iframes-covering-site-elements


&以及?根据使用它们的顺序以及URL中包含的其他设置两者都是正确的。显然?,如果这是第一个(或唯一)设置,则使用它,&否则。
亚历克斯

是的,但是IE有特殊需要。只需尝试一下,看看哪个可以在IE 10中运行,哪个不能。我尚未在IE 11中尝试过此操作。
2013年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.