2011-09-17 9 views
27

io uso questo codice per consentire agli utenti di incorporare i video di YouTube su un sito web che sto costruendo:schermo nero durante la rimozione di un video di youtube embedded javascript in IE8

function BuildYoutubePlayer(youtubeVideoId, width, height) { 
    youtubePlayer = "<iframe "; 
    youtubePlayer += "width=\"" + width + "\" "; 
    youtubePlayer += "height=\"" + height + "\" "; 
    youtubePlayer += "src=\"http://www.youtube.com/embed/" + youtubeVideoId + "\"&amp;wmode=transparent "; 
    youtubePlayer += "frameborder=\"0\" allowfullscreen>"; 
    youtubePlayer += "</iframe>"; 

    return youtubePlayer; 
} 

Questo embed sarà in un livello come lightbox a comparsa, quando l'utente chiude questo popup, il video viene rimosso dall'html, ma ottengo uno schermo intero nero solo su IE8, non riesco a trovare alcun motivo, ho provato ad incorporare il video di youtube e rimuoverlo, e ha funzionato bene, quindi sono sicuro mi manca qualcosa. per favore consiglio

+0

E come lo si rimuove. Possiamo ottenere una pagina demo magari con jsfiddle o jsbin? – epascarello

+0

L'ho incontrato prima, come un problema in tutti i browser (ma principalmente per es.). Sembra ruotare attorno al rendering di iframe. Distruggere quella parte della dom può causare errori unici. Cose simili accadono quando si tenta di animare la posizione di un iframe prima del suo caricamento, o di distruggerlo prima che sia nascosto. – Fresheyeball

risposta

45

Ho risolto questo nascondendo l'iFrame prima di rimuoverlo mentre rimuovevo il popup genitore.
Allora io dico $('iframe').hide(); poi $('myContainerPopup').remove();

Ho affrontato questo problema solo su IE8 e video di YouTube, non prova su IE7, ma su tutti gli altri browser cose sono state lavorando bene.

+0

Questa correzione ha funzionato per me. Stavo usando jQuery 'empty()' su un elemento contenente un video youtube incorporato (iframe). Chiamando 'hide()' prima che empty funzionasse, ma l'ordine inverso ha causato una schermata nera IE8 (che ha anche ucciso gli strumenti di sviluppo di IE). Nel mio test (limitato), il problema non ha influito su IE7, ma solo su IE8. – zlovelady

+0

btw funziona perfettamente in IE7, senza utilizzare nascondere l'iframe. sciocco IE – defau1t

+3

questo è il motivo per cui odio IE. grazie! – Luke

0

Io uso questo codice:

$(document).ready(function() { 
$('.popup-gallery').magnificPopup({ 
    callbacks: { 
     open: function() {$('iframe').hide();}, 
     close: function() {$('iframe').show();} 
    } 
}); 

});

Problemi correlati