youtube player api, meerdere onStateChange() werkt niet

Status
Niet open voor verdere reacties.

Dastrus

Gebruiker
Lid geworden
20 apr 2010
Berichten
21
Hallo,

Ik heb meerdere video's op mijn site en het is de bedoeling dat de bezoeker een video bekijkt en als hij die af heeft gekeken krijgt hij daar punten voor.

Ik kan er echter niet voor zorgen dat het werkt wanneer ik meerdere video's op dezelfde pagina heb staan. Ze doen dan allemaal niks en de laatste laat 3 alerts zien.

Bekijk mijn code hieronder.

[JS]
<script type="text/javascript" src="/js/swfobject.js"></script>
[/JS]

De volgende onderdelen bevinden zich in een while loop.

HTML:
<div style="float: right;" id="ytapiplayer'.$result['id'].'">
   You need Flash player 8+ and JavaScript enabled to view this video.
</div>

[JS]
<script type="text/javascript">
var params = { allowScriptAccess: "always" };
var atts = { id: "myytplayer'.$result['id'].'" };
swfobject.embedSWF("http://www.youtube.com/v/'.$result['url'].'?enablejsapi=1&playerapiid=ytplayer'.$result['id'].'&version=3",
"ytapiplayer'.$result['id'].'", "690", "381", "8", null, null, params, atts);

function onYouTubePlayerReady(playerId) {
var ytplayer'.$result['id'].' = document.getElementById("myytplayer'.$result['id'].'");
ytplayer'.$result['id'].'.addEventListener("onStateChange", "onytplayerStateChange'.$result['id'].'");
}

function onytplayerStateChange'.$result['id'].'(newState) {
if (newState == 0)
alert("Je hebt de video bekeken, goedzo!");
}
</script>
[/JS]

Alvast bedankt,

Dastrus
 
Laatst bewerkt:
Geef eens een url waarop dit probleem te zien is.
Gedeeltelijke sources zijn moeilijk te debuggen
 
[js]var atts = { id: "myytplayer'.$result['id'].'" };[/js]

deze echo je 3x uit, dus wordt alleen de laatste gebruikt (de var atts wordt 2x overschreven omdat het een global is).


Oplossing? Nou, net zoals in de rest van je script kan je de naam atts['id'] maken, of een array gebruiken :)
 
Hallo That Guy,

Ik denk niet dat dat het is. Hier is een voorbeeld op de google api site: http://code.google.com/apis/ajax/playground/?exp=youtube#working_with_multiple_players

En daar doet hij het gewoon, en daar word att ook niet als een array gebruikt. Verder heb ik die code ook op mijn site geplaatst en werkt het, dus kan het niet aan eventuele andere code liggen.

P.S. Heb je nog gekeken bij mijn vorige vraag? Ik ben er nog niet uit. http://www.helpmij.nl/forum/showthread.php/672163-offset-met-position-relative
 
Laatst bewerkt:
Heb het probleem gevonden, er mag maar 1 onYoutubePlayerReady() zijn. Heb het opgelost, bedankt voor het meedenken.

Dastrus
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan