7

Utilizzo dell'API JavaScript/iFrame di YouTube Sto cercando di cercare tra diversi momenti di un video diverso.Come risolvere l'errore "Impossibile eseguire" postMessage "su" DOMWindow "da un embed di YouTube

ho messo a nudo giù una demo a questo: http://jsbin.com/yuliponu

var player; 
window.onYouTubeIframeAPIReady = function() { 
    var iframe = document.createElement("iframe"); 
    iframe.width = 400; 
    iframe.height = 300; 
    iframe.id = "youtubeIframe"; 
    iframe.src = "https://www.youtube.com/embed/yta1WRuiupk?autoplay=1&enablejsapi=1&origin="+encodeURIComponent(window.location.protocol+"//"+document.domain)+"&playsinline=1&rel=0"; 
    iframe.setAttribute('frameborder', '0'); 
    iframe.setAttribute('allowFullScreen', ''); 
    document.getElementById("video").appendChild(iframe); 

    player = new YT.Player('youtubeIframe'); 
}; 

var tag = document.createElement('script'); 
tag.src = "https://www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

Se si dà un'occhiata nella console si vedrà questo errore:

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided 
('https://www.youtube.com') does not match the recipient window's origin 
('http://jsbin.com'). 

ho bisogno di questo per risolvere per iniziare utilizzando l'API JavaScript, ma non sono sicuro di come risolverlo.

UPDATE:

allora ho riavviato il computer e l'errore non si verifica. Aggiornerò se visualizzerò di nuovo l'errore.

risposta

1

Il problema è che si sta eseguendo il test su un sito trasferito utilizzando HTTP semplice ma si è richiesto l'API di YouTube nella versione SSL. Penso che Google ha risolto questo nella loro API JS Youtube IFrame ma sarebbe più elegante da usare:

tag.src = "//www.youtube.com/iframe_api";

invece di

tag.src = "https://www.youtube.com/iframe_api";

selezionando automaticamente lo stesso protocollo del genitore.