2011-05-14 14 views
6

Sto costruendo un plugin per WordPress e finora tutto bene con la libreria PHP. Ma sto riscontrando alcuni problemi con l'API JavaScript.jQuery e Vimeo Froogaloop API

Sto provando ad usarlo con jQuery, e penso che la versione di WordPress di jQuery abbia problemi con il collegamento $f. Perché non dovrebbe funzionare?

var vimeoPlayer = { 

    init: function() { 
     var vimeoPlayers = document.querySelectorAll('iframe'), 
     player; 

     jQuery('iframe.vimeo-player').each(function(index, iframe){ 
      player = vimeoPlayers[index]; 
      $f(player).vimeoPlayer.addEvent('ready', vimeoPlayer.ready); 
     }); 
    }, 

    addEvent: function(element, eventName, callback) { 
     if (element.addEventListener) { 
      element.addEventListener(eventName, callback, false); 
     } 
     else { 
      element.attachEvent(eventName, callback, false); 
     } 
    }, 

    ready: function(player_id) { 
     alert(player_id); 
    } 
} 

jQuery(document).ready(function($){ 
    vimeoPlayer.init.call(); 
}); 

È possibile vederlo in azione allo temp.woodshop.tv/?work/?dickies-campaign/?.

ottengo questo errore:

TypeError: Result of expression '$f(player).vimeoPlayer' [undefined] is not an object.

risposta

17

Un problema è che addEvent è sia una funzione che è stata definita sia un metodo dell'oggetto $ f (player). Sembra che tu stia confondendo i due. Il metodo addEvent dell'oggetto $ f (player) accetta solo due argomenti, il nome dell'evento giocatore e la funzione da chiamare. Dovrebbe essere usato come $ f (your-iframe) .addEvent ('evento vimeo', your_function);

La funzione addEvent unifica gli eventi tra i metodi IE e W3C. Non è necessario perché stai usando jQuery. jQuery (qualunque cosa) .click() fa la stessa cosa. Non vedo alcuna parte del tuo frammento dove ne hai bisogno ma, se lo fai, utilizzerei semplicemente il metodo jQuery.

Inoltre, l'oggetto lettore video dovrebbe essere $ f (giocatore), invece di $ f (giocatore) .vimeoPlayer

Prova questa

jQuery('iframe.vimeo-player').each(function(){ 
    $f(this).addEvent('ready', ready); 
}); 

Un'altra cosa da notare è che tutti gli eventi giocatore supplementare necessario da aggiungere dalla funzione di callback pronta. Per esempio:

function ready(player_id){ 
    $f(player_id).addEvent('play', play); 
    $f(player_id).api('play'); 
    alert("Ready!!!"); 
} 
function play(){ 
    alert("Playing!!!"); 
} 

ho avuto difficoltà a trovare le informazioni che voglio sul Froogaloop API di Vimeo, ma dopo aver setacciato Vimeo Froogaloop API Playground una dozzina di volte sto iniziando a ottenere l'idea di come funziona.

Buona fortuna!

+1

Hey Jon, ho trasformato questo in un esempio operativo qui: http://labs.funkhausdesign.com/examples/vimeo/froogaloop2-api-basics.html –

+1

Grazie geniale! Gli esempi API di Vimeo lasciano un po 'a desiderare – Simon27

+0

Grazie mille, questo mi ha aiutato a migliorare l'esempio di gioco di vimeo (dopo aver trascorso qualche ora a giocare con esso) – ShayneStatzell

0

Invece di provare $f(player).vimeoPlayer.addEvent$(this).addEvent.

+0

Grazie, ma $ f() è una scorciatoia per l'API Vimeo, quindi deve essere presente. L'ho comunque avvicinato in questo modo: Froogaloop (this) .addEvent ('ready', vimeoPlayer.ready); Ma questo dà un "eventCallback [target_id] non è definito sulla linea 22." Errore nella loro API. –

+0

Analizza: "$ f (player) .vimeoPlayer.addEvent ('ready', vimeoPlayer.ready)", qui $ f (player) prende un tag iframe (o HTML) come input e dovrebbe restituire qualcosa che ha vimeoPlayer come oggetto (perché solo allora questo codice è corretto). . .ma esaminando attentamente non si trova né $ f (player) restituisce nulla né vimeoPlayer è dichiarato prima usato come oggetto qui .... Quindi non so come aiutarti in questo caso :-(sono solo in grado di scopri il problema ... scusa Drew – seoul

+0

Oppure: '' 'jQuery ('iframe.vimeo'). each (function() {Froogaloop (this) .addEvent ('ready', ready);});' ' ' – danger89

Problemi correlati