2013-01-13 6 views
8

Ich habe eine Seite mit einem iframe, die ein Youtube-Video lädt (der src von iframe wird zur Laufzeit geändert). ich auf Code von Rob basierend W in verschiedenen Antworten zu diesem Thema zur Verfügung gestelltYoutube Iframe: onYouTubePlayerAPIReady() nicht aufgerufen

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

Wenn dann iframe diesen Code geladen wird ausgeführt:

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

die aufgerufene Funktion dispose_ytplayer() ist:

aber die zweite Warnung ("onYouTubePlayerAPIReady aufgerufen") wird nie aufgerufen, und mein Chrom console.log zeigt diese Fehlermeldung aus www-embed_core_module-vflNmuGQq.js: 26:

Unsafe JavaScript Versuch zuzugreifen Rahmen mit URL http://mysite.com von Rahmen mit URL http://www.youtube.com/embed/nOEw9iiopwI?enablejsapi=1. Domains, Protokolle und Ports müssen übereinstimmen.

Irgendwelche Ideen?

Antwort

20

onYouTubePlayerAPIReady sollte auf dem window Objekt sein.

Versuch:

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

es funktioniert, toll! Vielen Dank! – jenjis

+0

Sie haben meinen Tag gerettet .... danke Mann! –

+0

Sie sind ein Lebensretter, danke! –

0

Es scheint, wie Sie die Funktionen nicht ausgeschaltet richtig schließen. Die letzte } schließt onYouTubePlayerAPIReady(), nicht dispose_ytplayer().

Festcode:

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

danke für schnelle antwort, aber der originalcode ist korrekt, ich habe einen fehler gemacht mit ausschneiden/kopieren, sorry :) – jenjis

Verwandte Themen