ปัญหา wmode iframe ของ Youtube


136

การใช้ javascript กับ jQuery ฉันกำลังเพิ่ม iframe ที่มี url ของ youtube เพื่อแสดงวิดีโอบนเว็บไซต์ แต่โค้ดฝังตัวที่โหลดใน iframe จาก youtube ไม่มี wmode = "Opaque" ดังนั้นกล่องโมดอลในหน้าจึงแสดงขึ้น ใต้วิดีโอ youtube

มีความคิดอย่างไรในการแก้ปัญหา?


นี่ยังคงเป็นปัญหาอยู่หรือไม่? ฉันเคยใช้วิธีนี้มาก่อน แต่ไม่สามารถสร้างปัญหาเดิมใน Chrome / Firefox / IE ล่าสุดได้
marcovtwout

คำตอบ:


238

ลองเพิ่ม?wmode=opaqueURL หรือ&wmode=opaqueหากมีพารามิเตอร์อยู่แล้ว

หากไม่ได้ผลให้ลองใช้วิธีนี้แทน&wmode=transparentซึ่งจะทำงานในเบราว์เซอร์ IE เช่นกัน


1
ดี! ทำงานบน firefox & chrome แต่ด้วยเหตุผลบางอย่างไม่ทำงานบน IE ... มีความคิดอย่างไร
danfromisrael

31
ลองใช้ & amp; wmode = transparent แทน
Shabith

29
การตั้งค่า "& amp; wmode = xxxx" จะถือว่าคุณได้ส่งพารามิเตอร์ใน URL ไปแล้ว ฉันไม่ได้อยู่ในกรณีของฉันดังนั้นฉันจึงต้องเพิ่ม "? wmode = xxxx" ใน URL แทน
Matt Huggins

6
ความแตกต่างระหว่างopaquetransparentและ opaqueควรจะมีประสิทธิภาพมากขึ้น
donut

3
Shabith - "wmode = Opaque" ควรเป็น "wmode = opaque" (ตัวพิมพ์เล็ก 'o')
John


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
โปรดทราบว่าสิ่งนี้ยังต้องการ wmode ใน playerVars เมื่ออยู่ภายใต้ YT.Player จะใช้ได้เฉพาะกับโปรแกรมเล่น HTML5 เท่านั้น การเพิ่ม wmode ไปยัง playerVars จะส่งพารามิเตอร์นั้นไปยังวัตถุ Flash ซึ่งมีปัญหาลำดับ z ของตัวเอง ดูที่นี่: groups.google.com/forum/?fromgroups#!topic/youtube-api-gdata/…ฉันจะแก้ไขคำตอบของคุณตามนั้น
Dylan McCall

1
ฉันลองสิ่งนี้แล้วก็ไม่ได้ผล ฉันยังไม่พบการอ้างอิงถึง wmode ในเอกสาร YouTude
sboisse

ลิงก์เปลี่ยนไปตั้งแต่ฉันโพสต์ครั้งแรกเช่นเดียวกับวิธีการตั้งค่า wmode คุณสามารถตั้งค่าพารามิเตอร์แฟลชตอนนี้หรือพารามิเตอร์โปรแกรมเล่น youtube ผ่าน playerVars ฉันได้อัปเดตตัวอย่างข้างต้นแล้ว
ปลาสเตอร์เจียนพลาสติก

การโหลด API ทั้งหมดเพียงเพื่อเปลี่ยนค่าที่สามารถเปลี่ยนแปลงได้ง่ายใน URL นั้นเป็นการใช้งานเกินทั้งหมด อย่าใช้สิ่งนี้
fregante

มีพวกเราบางคนที่ทำงานกับโปรแกรมเล่น chromeless และใช้ JS API เพื่อควบคุม UI อยู่แล้ว สำหรับเราการแก้ปัญหานี้เป็นเรื่องที่น่าสนใจ! ขอบคุณ
maxijb

8

การเพิ่ม?wmode=opaqueURL ดูเหมือนจะช่วยแก้ปัญหานี้ให้ฉันได้แม้ว่าฉันจะยังไม่ได้ทดสอบใน IE

สำหรับผู้ที่คุณมีปัญหากับโซลูชันที่เสนอก่อนหน้านี้โปรดทราบว่าเครื่องหมายแอมเพอร์แซนด์ inital จะใช้งานได้ก็ต่อเมื่อคุณจัดหาอาร์กิวเมนต์อื่น ๆ ให้กับ URL แล้ว อาร์กิวเมนต์แรกต้องมีเครื่องหมายคำถามเริ่มต้น:http://www.example.com?first=foo&second=bar


ตอนแรกฉันได้รูปสี่เหลี่ยมผืนผ้าสีดำโดยไม่คำนึงถึงวิดีโอที่ฉันพยายามจะแสดง .. ปรากฎว่าเครื่องทดสอบไม่ได้ติดตั้งแฟลชและบทสนทนาสำหรับการติดตั้งแฟลชถูกชดเชยมากเกินไป!
Zeb

3

เพิ่ม&amp;wmode=transparentลงใน url และทดสอบเสร็จแล้ว

ฉันใช้เทคนิคนั้นในปลั๊กอิน WordPress รหัสย่อYouTubeของฉันเอง

ตรวจสอบซอร์สโค้ดหากคุณพบปัญหาใด ๆ


การเพิ่ม & amp; wmode = โปร่งใสหลังจาก URL ของ you tube แก้ไขปัญหาในทุกเบราว์เซอร์ ขอบคุณสำหรับ Mr Tubal เก่งมาก :)

1

เคล็ดลับ! - ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มดัชนี z ในองค์ประกอบที่คุณต้องการให้อยู่เหนือวิดีโอที่ฝังไว้ ฉันเพิ่มสตริงแบบสอบถาม wmode แล้ว แต่ก็ยังใช้ไม่ได้ ... จนกว่าฉันจะเพิ่ม z-index ขององค์ประกอบอื่น :)



0

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ก็ยังคงปรากฏในการค้นหาอันดับต้น ๆ สำหรับปัญหานี้ดังนั้นฉันจึงเพิ่มคำตอบใหม่เพื่อช่วยผู้ที่กำลังมองหา IE:

การเพิ่ม&wmode=opaqueต่อท้าย URL ใช้ไม่ได้ใน IE 10 ...

อย่างไรก็ตามการเพิ่ม?wmode=opaqueเคล็ดลับ!


พบโซลูชันนี้ที่นี่: http://alamoxie.com/blog/web-design/stop-iframes-covering-site-elements


&และ?ทั้งสองอย่างถูกต้องขึ้นอยู่กับลำดับที่ใช้และการตั้งค่าอื่น ๆ รวมอยู่ใน URL เห็นได้ชัดว่า?จะใช้หากเป็นการตั้งค่าแรก (หรืออย่างเดียว) &มิฉะนั้น
Alex

ใช่ แต่ IE มีความต้องการพิเศษ เพียงแค่ลองและดูว่าตัวใดใช้งานได้ใน IE 10 และใช้ไม่ได้ ฉันยังไม่ได้ลองใน IE 11
อำพัน

0

เมื่อเร็ว ๆ นี้ฉันเห็นว่าบางครั้งโปรแกรมเล่นแฟลชไม่รู้จัก&wmode=opaqueคุณก็ควรผ่าน&WMode=opaqueเช่นกัน (สังเกตตัวพิมพ์ใหญ่)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.