2011-05-14 7 views
6

私はWordPressへのプラグインを構築しています。しかし、私はJavaScript APIにいくつか問題があります。jQueryとVimeo Froogaloop API

私はjQueryでそれを使用しようとしています。私は、WordPress版のjQueryがショートカット$fを使いこなしていると思います。なぜこれは動作しませんでしたか?

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(); 
}); 

temp.woodshop.tv/?work/?dickies-campaign/?で実際に確認できます。

私はこのエラーを取得する:

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

答えて

17

addEventはあなたが定義した関数でも、$ f(player)オブジェクトのメソッドでもあります。あなたは2つを混同しているようです。 $ f(player)オブジェクトのaddEventメソッドは、プレーヤーイベントの名前と呼び出される関数の2つの引数だけをとります。これは$ f(your-iframe).addEvent( 'vimeo event'、your_function)として使用する必要があります。

addEvent関数は、IEメソッドとW3Cメソッドの間のイベントを統一します。 jQueryを使用しているため、これは必要ありません。 jQuery(何でも).click()も同じことをします。あなたのスニペットの必要な部分は表示されませんが、そうした場合、jQueryメソッドを使用します。

また、ビデオプレーヤーオブジェクトが.vimeoPlayer

が注意すべきもう一つは、任意の追加のプレーヤーのイベントが必要だということです。この

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

を試してみてください代わりに$ fの(プレイヤー)F $(プレイヤー)でなければなりませんあなたの準備完了コールバック関数から追加されます。たとえば:

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

私はVimeoののFroogaloop APIに私はそれがどのように動作するかのアイデアを得るために始めて十数回程度Vimeo Froogaloop API Playgroundを精練した後、欲しい情報を見つけるのに苦労をしました。

幸運を祈る!

+1

こんにちはJon、私はこれを実例に変えました:http://labs.funkhausdesign.com/examples/vimeo/froogaloop2-api-basics.html –

+1

ありがとうございました!Vimeo独自のAPIの例が少し残っています – Simon27

+0

おかげさまで、これはvimeoの遊び場の例よりも優れていました(それに数時間を費やした後) – ShayneStatzell

0

代わりの$f(player).vimeoPlayer.addEvent$(this).addEventを試してみてください。

+0

ありがとうございますが、$ f()はVimeo APIのショートカットなので、そこにある必要があります。私はしかし、これのように近づけました: Froogaloop(this).addEvent( 'ready'、vimeoPlayer.ready); しかし、これは "eventCallbacks [target_id]が22行目で定義されていません" APIにエラーがあります。 –

+0

"$ f(player).vimeoPlayer.addEvent( 'ready'、vimeoPlayer.ready)"ここで、$ f(player)はiframe(またはHTML)タグを入力として受け取り、vimeoPlayerをオブジェクト(このコードだけが正しいので)。 。しかし、注意深く調べると、$ f(player)も何も返されず、vimeoPlayerがオブジェクトとして使用される前に宣言されていないことがわかりました....だから、この場合あなたを助ける方法はわかりません。問題を見つける...ごめんなさい。Drew – seoul

+0

または '' 'jQuery( 'iframe.vimeo')。それぞれ(function(){Froogaloop(this).addEvent( 'ready'、ready);});' ' ' – danger89

関連する問題