2013-01-13 1 views
8

Ho una pagina con un iframe che carica un video di youtube (lo src dell'iframe viene modificato in runtime). Ho basato sul codice di Rob W fornito in risposte diverse su questo argomentoYoutube Iframe: onYouTubePlayerAPIReady() non chiamato

<iframe id="browser" class="browser" scrolling="no" name="navigation" 
src="http://www.youtube.com/embed/nOEw9iiopwI?enablejsapi=1" application="youtube" style="display: 
inline;"></iframe> 

Poi, quando iframe viene caricato il codice viene eseguito:

$('.browser').load(function() { 
dispose_ytplayer(); 
}); 

chiamato funzione dispose_ytplayer() è:

ma il secondo avviso ("chiamatoYouTubePlayerAPIReady") non viene mai chiamato e il mio chrome console.log mostra questo messaggio di errore da www-embed_core_module-vflNmuGQq.js: 26:

tentativo Unsafe JavaScript per accedere telaio con URL http://mysite.com dal telaio con URL http://www.youtube.com/embed/nOEw9iiopwI?enablejsapi=1. Domini, protocolli e porte devono corrispondere.

Qualche idea?

risposta

20

onYouTubePlayerAPIReady deve essere sull'oggetto window.

prova:

window.onYouTubePlayerAPIReady = function() { 
     alert('called onYouTubePlayerAPIReady'); 
     ytIframeplayer = new YT.Player('browser', { 
      events: { 
       "onStateChange": stopCycle 
      } 
    }); 
} 
+1

funziona, grande! Grazie! – jenjis

+0

hai salvato la mia giornata .... grazie amico! –

+0

Sei un risparmiatore di vita, grazie! –

0

Sembra come se non chiudendo le funzioni fuori correttamente.

L'ultimo } sta chiudendo onYouTubePlayerAPIReady(), non dispose_ytplayer().

codice fisso:

function dispose_ytplayer() { 
    (function(){ 
     var s = document.createElement("script"); 
     s.src = "http://www.youtube.com/player_api"; 
     var before = document.getElementsByTagName("script")[0]; 
     before.parentNode.insertBefore(s, before); 
    })(); 

    alert('called yt_dispose'); 

    var ytIframeplayer; 

    function onYouTubePlayerAPIReady() { 
     alert('called onYouTubePlayerAPIReady'); 
     ytIframeplayer = new YT.Player('browser', { 
      events: { 
       "onStateChange": stopCycle 
      } 
     }); 
    } 
} 
+0

grazie per la risposta rapida, ma il codice originale è corretto, ho fatto un errore con taglio/copia, mi dispiace :) – jenjis