Youtube iframe проблема с wmode

Используя javascript с jQuery, я добавляю iframe с URL-адресом YouTube для отображения видео на веб-сайте, однако код внедрения, который загружается в iframe с YouTube, не имеет wmode = "Opaque", поэтому на странице отображаются модальные поля под видео на YouTube.

Есть идеи, как решить проблему?


person snakeyyy    schedule 29.10.2010    source источник
comment
Это все еще проблема? Я использовал это решение раньше, но не могу воспроизвести исходную проблему в последних версиях Chrome / Firefox / IE.   -  person marcovtwout    schedule 18.11.2013


Ответы (9)


Попробуйте добавить ?wmode=opaque к URL-адресу или &wmode=opaque, если параметр уже существует.

Если это не сработает, попробуйте вместо этого &wmode=transparent, который также будет работать в браузере IE.

person Shabith    schedule 18.11.2010
comment
отлично! работает в Firefox и Chrome, но по какой-то причине не работает в IE ... есть идеи? - person danfromisrael; 24.11.2010
comment
попробуйте вместо этого использовать wmode = transparent - person Shabith; 25.11.2010
comment
Спасибо. Это было именно то, что мне было нужно. Безуспешно пытался использовать обходные пути z-index. - person ; 14.02.2011
comment
Я также обнаружил, что добавление ‹param name = wmode value = opaque /› помогло мне - person Kieran; 25.05.2011
comment
Параметр wmode = xxxx предполагает, что вы уже передаете параметры в URL-адресе. Я не был в моем случае, поэтому вместо этого мне нужно добавить? Wmode = xxxx в URL-адрес. - person Matt Huggins; 28.05.2011
comment
Различия между opaque и transparent. opaque должен быть более производительным. - person donut; 14.09.2011
comment
Шабит - wmode = непрозрачный должен быть wmode = непрозрачный (строчная буква "о") - person John; 19.03.2012
comment
@Shabith Это на самом деле устранило для меня проблему в Internet Explorer. Добавление? Wmode = transparent к URL-адресу решало проблему во всем, кроме всех версий IE. Но изменение атрибута на предложенный вами пример wmode = transparent устранило проблему в каждом браузере, включая все версии IE. Так что прошу вас - ваш комментарий должен быть включен в ответ. Потому что это именно то, что решило проблему. Спасибо! - person James; 20.08.2015

Попробуйте добавить ?wmode=transparent в конец URL-адреса. Работал у меня.

person Casper    schedule 06.12.2010
comment
На мой взгляд, предпочтительным вариантом должен быть «прозрачный». - person Foxinni; 17.10.2012

Если вы используете новый асинхронный 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

person Plastic Sturgeon    schedule 21.02.2012
comment
Обратите внимание, что для этого ТАКЖЕ требуется wmode в playerVars. Когда он находится прямо под YT.Player, он будет работать только для проигрывателя HTML5. Добавление wmode в playerVars также отправляет этот параметр Flash-объекту, у которого есть собственная проблема с z-порядком. См. Здесь: groups.google.com/forum/? fromgroups #! topic / youtube-api-gdata / Я соответствующим образом отредактирую ваш ответ. - person Dylan McCall; 21.03.2012
comment
Я попробовал это, и это не сработало. Я также не нашел упоминания о wmode в документации YouTude. - person sboisse; 17.10.2013
comment
Ссылка изменилась с тех пор, как я впервые опубликовал, как и метод установки wmode. Вы можете установить любой параметр flash сейчас или параметр проигрывателя YouTube через playerVars. Я обновил приведенный выше пример. - person Plastic Sturgeon; 17.10.2013
comment
Загрузка всего API только для того, чтобы изменить значение, которое можно легко изменить в URL-адресе, - это полный перебор. Не используйте это. - person fregante; 16.11.2013
comment
Некоторые из нас работают с проигрывателем Chromeless Player и уже используют JS API для управления пользовательским интерфейсом. Для нас это решение просто потрясающе! Спасибо - person maxijb; 02.01.2014

Добавление ?wmode=opaque к URL-адресу, похоже, решает эту проблему для меня, хотя я еще не тестировал это в IE.

Тем из вас, у кого возникли проблемы с ранее предложенным решением, обратите внимание, что начальный амперсанд будет работать только в том случае, если вы уже предоставляете другие аргументы URL-адресу. Первый аргумент должен иметь начальный вопросительный знак: http://www.example.com?first=foo&second=bar

person Markus Amalthea Magnuson    schedule 09.02.2011
comment
Изначально я получал черный прямоугольник независимо от видео, которое я пытался показать ... оказалось, что на тестовой машине не была установлена ​​вспышка, и диалог для установки вспышки был слишком смещен! - person Zeb; 16.09.2011

Добавьте &amp;wmode=transparent к URL-адресу, и все готово, проверено.

Я использую эту технику в своем собственном плагине wordpress шорткоде YouTube

Проверьте его исходный код, если вы столкнетесь с какой-либо проблемой.

person Túbal Martín    schedule 28.02.2011
comment
Добавление wmode = transparent после URL-адреса YouTube Решило проблему во всех браузерах. Спасибо мистеру Тубалу, отличная работа :) - person ; 13.03.2011

Просто совет! Убедитесь, что вы подняли z-индекс на элементе, который хотите разместить над встроенным видео. Я добавил строку запроса wmode, но она по-прежнему не работала ... пока я не увеличил z-индекс другого элемента. :)

person Tyson Phalp    schedule 17.10.2012

&wmode=opaque у меня не сработало (chrome 10), но &amp;wmode=transparent сразу устранил проблему.

person imjared    schedule 29.03.2011

Я знаю, что это старый вопрос, но он по-прежнему встречается в самых популярных запросах по этой проблеме, поэтому я добавляю новый ответ, чтобы помочь тем, кто ищет его для IE:

Добавление &wmode=opaque в конец URL НЕ работает в IE 10 ...

Однако добавление ?wmode=opaque делает свое дело!


Нашел это решение здесь: http://alamoxie.com/blog/web-design/stop-iframes-covering-site-elements

person Amber June    schedule 16.08.2013
comment
& и ? оба верны в зависимости от того, в каком порядке они используются и какие другие настройки включены в URL-адрес. Очевидно, ? используется, если это первая (или единственная) настройка, & в противном случае. - person Alex; 11.09.2013
comment
Да, но у IE есть особые потребности. Просто попробуйте и посмотрите, что работает в IE 10, а что нет. Я еще не пробовал этого в IE 11. - person Amber June; 20.12.2013

недавно я заметил, что иногда флеш-плеер не распознает &wmode=opaque, вместо этого вы также должны передать &WMode=opaque (обратите внимание на верхний регистр).

person Nereo Costacurta    schedule 12.10.2015