Vấn đề wmode Youtube iframe


134

Sử dụng javascript với jQuery, tôi đang thêm iframe bằng url youtube để hiển thị video trên trang web tuy nhiên mã nhúng được tải trong iframe từ youtube không có wmode = "Opaque", do đó các hộp modal trên trang được hiển thị bên dưới video youtube.

Bất kỳ ý tưởng làm thế nào để giải quyết vấn đề?


Đây vẫn là một vấn đề? Tôi đã sử dụng giải pháp này trước đây nhưng không thể tái tạo vấn đề ban đầu trong Chrome / Firefox / IE mới nhất.
marcovtwout

Câu trả lời:


238

Hãy thử thêm ?wmode=opaquevào URL hoặc &wmode=opaquenếu đã có một tham số.

Nếu nó không hoạt động, hãy thử điều này thay vào đó, &wmode=transparentnó cũng sẽ hoạt động trong trình duyệt IE.


1
đẹp! hoạt động trên firefox & chrome nhưng vì một số lý do không hoạt động trên IE ... có ý tưởng nào không?
danfromisrael

31
thay vào đó, hãy thử sử dụng & amp; wmode = trong suốt
Shabith

29
Cài đặt "& amp; wmode = xxxx" giả định rằng bạn đã truyền tham số trong URL. Tôi không ở trong trường hợp của mình, vì vậy thay vào đó tôi cần thêm "? Wmode = xxxx" vào URL.
Matt Huggins

6
Sự khác biệt giữa opaquetransparent . opaqueđược cho là có hiệu suất cao hơn.
bánh rán

3
Shabith - "wmode = Opaque" phải là "wmode = opaque" (chữ thường 'o')
John

81

Hãy thử thêm ?wmode=transparentvào cuối URL. Đã làm cho tôi.


"Minh bạch" nên là lựa chọn ưu tiên theo ý kiến ​​của tôi.
Foxinni

18

Nếu bạn đang sử dụng API không đồng bộ mới, bạn sẽ cần thêm tham số như sau:

<!-- 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
      }
    });
}

Điều này dựa trên tài liệu google và ví dụ ở đây: http://code.google.com.vn/apis/youtube/iframe_api_Vference.html


7
Lưu ý rằng CSONG này cần wmode trong playerVars. Khi nó nằm dưới YT.Player, nó sẽ chỉ hoạt động cho trình phát HTML5. Thêm wmode vào playerVars cũng gửi tham số đó đến đối tượng Flash, có vấn đề theo thứ tự z riêng. Xem tại đây: Groups.google.com/forum/?fromgroups#!topic/youtube-api-gdata/ khăn Tôi sẽ chỉnh sửa câu trả lời của bạn cho phù hợp.
Dylan McCall

1
Tôi đã thử điều này và nó đã không hoạt động. Tôi cũng không tìm thấy bất kỳ tài liệu tham khảo nào về wmode trong tài liệu YouTude.
sboisse

Liên kết đã thay đổi kể từ lần đầu tiên tôi đăng, cũng như phương thức thiết lập wmode. Bạn có thể đặt bất kỳ tham số flash nào ngay bây giờ hoặc tham số trình phát youtube thông qua playerVars. Tôi đã cập nhật ví dụ trên.
Cá tầm nhựa

Tải toàn bộ API chỉ để thay đổi một giá trị có thể dễ dàng thay đổi trong URL là quá mức cần thiết. Đừng dùng cái này.
fregante

Có một số người trong chúng tôi làm việc với trình phát không màu và đã sử dụng API JS để kiểm soát UI. Đối với chúng tôi, giải pháp này hoàn toàn đá! Cảm ơn
maxijb

8

Thêm ?wmode=opaquevào URL dường như để giải quyết vấn đề này cho tôi, mặc dù tôi chưa thử nghiệm nó trong IE.

Đối với những người bạn gặp rắc rối với giải pháp được đề xuất trước đó, lưu ý rằng ký hiệu thay thế và sẽ chỉ hoạt động nếu bạn đã cung cấp các đối số khác cho URL. Đối số đầu tiên phải có dấu chấm hỏi ban đầu:http://www.example.com?first=foo&second=bar


Ban đầu, tôi nhận được một hình chữ nhật màu đen bất kể video tôi đang cố hiển thị .. hóa ra máy kiểm tra không cài đặt flash và đoạn hội thoại để cài đặt flash đã bị bù đắp quá nhiều!
Zeb

3

Thêm &amp;wmode=transparentvào url và bạn đã hoàn thành, đã thử nghiệm.

Tôi sử dụng kỹ thuật đó trong plugin wordpress của riêng mình Shortcode YouTube

Kiểm tra mã nguồn của nó nếu bạn gặp bất kỳ vấn đề.


Thêm & amp; wmode = trong suốt sau khi URL ống của bạn Giải quyết vấn đề trên tất cả các trình duyệt. Cảm ơn ông Tubal, công việc tốt :)

1

Chỉ là một mẹo! - đảm bảo bạn tăng chỉ số z trên thành phần bạn muốn xem qua video được nhúng. Tôi đã thêm chuỗi truy vấn wmode và nó vẫn không hoạt động ... cho đến khi tôi tăng chỉ số z của phần tử khác. :)


0

&wmode=opaquekhông làm việc cho tôi (chrome 10) nhưng &amp;wmode=transparentđã khắc phục vấn đề ngay.


0

Tôi biết đây là một câu hỏi cũ, nhưng nó vẫn xuất hiện trong các tìm kiếm hàng đầu cho vấn đề này vì vậy tôi đang thêm một câu trả lời mới để giúp những người tìm kiếm một câu hỏi cho IE:

Thêm &wmode=opaquevào cuối URL KHÔNG hoạt động trong IE 10 ...

Tuy nhiên, thêm ?wmode=opaquekhông có mẹo!


Tìm thấy giải pháp này tại đây: http://alamoxie.com/blog/web-design/stop-iframes-covering-site-elements


&?cả hai đều chính xác tùy thuộc vào thứ tự chúng được sử dụng và các cài đặt khác được bao gồm trong URL. Rõ ràng ?là được sử dụng nếu đây là cài đặt đầu tiên (hoặc duy nhất), &nếu không.
Alex

Có, nhưng IE có nhu cầu đặc biệt. Chỉ cần thử nó và xem cái nào hoạt động trong IE 10 và cái nào không. Tôi chưa thử điều này trong IE 11.
Amber ngày

0

Gần đây tôi thấy rằng đôi khi trình phát flash không nhận ra &wmode=opaque, tôi cũng nên vượt qua &WMode=opaque(chú ý chữ hoa).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.