1

わかった、私はvimeoのFroogaloop APIが本当に、本当に、本当に嫌いです。今の場所にたどり着くまでに3時間以上かかりました。彼らの例はどれも彼らのウェブサイトで私にとって役に立たなかったし、ネット上ではほとんど役に立たなかった!

ボタンをクリックするだけでビデオの再生を開始するために、vimeo と froogaloop を使用したビデオがあります。私のコードはこのウェブサイトからのものですが、再生イベントが #api_click の onclick で発生するように変更したことを除きます。

iframe には ?api=1&player_id=basketball_video があります。ビデオ、Chrome、Safari、IE9、さらには IE8 で再生を開始します! しかし、Firefox ではありませんか?!

それを再生する私のコードは次のとおりです。

// minified froogaloop, followed by:
    $(document).ready(function() {

        // Enable the API on each Vimeo video
      var players = [document.getElementById('basketball_video')];
        Froogaloop(players[0]).addEvent('ready', ready);

        $('#api_play').bind('click', function() {
          // Fire an API method
          // http://vimeo.com/api/docs/player-js#reference
          $('#sheet').click();
          Froogaloop(players[0]).api('play');
        });

        function ready(playerID) {
            // Add event listerns
            // http://vimeo.com/api/docs/player-js#events
            Froogaloop(playerID).addEvent('play');
        }
    });
4

3 に答える 3

3

私は同じ問題を抱えていましたが、それはかなり奇妙で腹立たしいものです。私は使いたくない醜いハックを思いつきましたが、それはちょっとうまくいっているようです。これは十分にテストされておらず、もっと良い方法が必要だと思いますが、次のようになります。

「display:none」を使用して Vimeo iframe が非表示になっていると、Firefox が Froogaloop API にアクセスできないようです。これが問題の実際の原因であるかどうかはわかりませんが、「display:none」を削除して iframe の幅と高さを 0 に設定し、jQuery を使用して動的にapi('play') を呼び出す直前の正しい値。

また、ユーザーがビデオを閉じたときにビデオを現在の位置で一時停止したい場合 (ユーザーが再度開いた場合に同じ場所から自動的に再開されるようにするため)、iframe のサイズを元に設定してビデオを非表示にする必要があることもわかりました。 jQuery の hide() 関数を使用するのではなく、0 にします。

醜いでしょ?

編集: 別の解決策は、iframe ウェイの初期位置を画面外に設定し、ユーザーがそれを見ることができないようにし、ビデオを表示するときに正しい位置に移動することです。次に、画面外に戻して非表示にします。

于 2011-09-12T20:06:52.677 に答える
2

私はleakybagと同じ問題を抱えていましたが、iframeが「display: none;」に設定されているとイベントが発生しないようです。イベントがバインドされたとき。

これに対する私の解決策は、iframeが表示されたときにのみvimeo APIイベントをバインドすることでした(「display:none;」以外に設定)。

より正確には、各スライドに vimeo ビデオを含むスライダーがありました。そのため、スライドが変更されるたびに実行されるスライダーに vimeo イベント バインドを使用してコールバック関数を渡しました。コールバック関数のバインディングは、アクティブなスライドのビデオのみをターゲットにします。

これが役に立てば幸いです。この問題は、vimeo js api docs で言及する必要があると思います。

編集:参考までに、私はfirefox 29.0を使用していました!

于 2014-05-07T08:39:56.720 に答える
0

要素のスワップが発生したときに iframe ソースに 'autoplay=1' を追加することで、これを回避しました。このようなもの:

iframe = $(this).find('iframe')
src = iframe.attr('src') 
src += '&autoplay=1'
iframe.attr('src', src) 
于 2013-07-19T21:33:52.610 に答える