2

SO と Vimeo のドキュメントを精査しましたが、Vimeo の Ready Event 外で API メソッドを呼び出す方法がわかりません。Vimeo プレーヤーを作成し、それを teacher.js に埋め込みました。

    $(".video-player").prepend('<iframe id="player" src="//player.vimeo.com/video/'+video_id+'?api=1&player_id=player&badge=0&title=0&byline=0&portrait=0" width="100%" height="100%" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>');

    player = $('iframe#player')[0];
    vimeoSetup(player);

次に、別のスクリプトで vimeoSetup を呼び出します。

function vimeoSetup (player) {
$f(player).addEvent('ready', ready);

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

  function ready(player_id) {
    // Keep a reference to Froogaloop for this player
    container = document.getElementById(player_id).parentNode.parentNode;
    froogaloop = $f(player_id);    
    var buttons = container.querySelector('div#video-player-controls-holder-teacher div'),
    playBtn = document.querySelector('#play-pause');

   //play-pause -- I wanted to have a single play-pause button, which is working fine
    addEvent(playBtn, 'click', function() {
      froogaloop.api('paused', function(paused) {
        if(paused) {
            froogaloop.api('play');
        } else {
            froogaloop.api('pause');
        }
      });
    });
    ...

ここで、call $f(player).api('pause'); と言いたい場合は、teacher.js で、次のエラーが表示されます: http://player.vimeo.comにメッセージを投稿できません。受信者にはオリジン mydomain があります。これはとても単純な問題のように思えます。現在私には理解できない「this」の使用が関係しているのか、それとも Vimeo プレーヤーの埋め込みを間違って取得しているのかはわかりませんが、多くの「メソッドがありません」このオブジェクトの.api」を実験中。

最終的な目標は、vimeo プレーヤーを作成し、コントロールを提供し (どちらも優れています)、API を使用して、一時停止、再生、時間など、バックボーンにフィードするメソッドを呼び出すことです。

「クリック」イベントやユーザー生成イベント以外に使用できるイベントはありますか? 別の関数が呼び出されたことを示すイベントのように? 回りくどいようです...私のバックボーンビューは次のようになります。

    pause: function () {
     this.player.pauseVideo(); //this is for a YouTube API which works great
     //I want to be able to similarly call something like froogaloop.api('pause');
    },

どうもありがとう - StackOverflow は私に驚くべきことを教えてくれました。

4

1 に答える 1

0

したがって、'ready'イベントが機能している場合は、すべてが正しくセットアップされている必要があります。しかし、ここで考えられる問題が 1 つあります。
の:

player = $('iframe#player')[0];
vimeoSetup(player);

あなたはObjectID'player'で取得してから、それをvimeoSetup(player);渡すことで機能Object$f(player)ています。
ただし、関数内のコードのさらに下では、ではなくreadyに渡すため、API 呼び出しは機能しません。$f(player_id)idObject

Object再度取得してplayer_idに渡すか、グローバルとして$f()保存してから、すべての API メソッドを呼び出す必要があります (ただし、少数の動的にスポーンするプレーヤーのようなものをそれぞれ独自のコントロールで作成したい場合は、良いオプションではありません。または、あなたがグローバル変数を恐れている人の1人に過ぎない場合)player = $('iframe#player')[0];var

于 2015-01-21T23:23:32.477 に答える