25

froogaloop APIを使用して、vimeoのonPlay、onPause、およびonFinishイベントを認識しようとしています。私はこのことで想像できるすべてを試しましたが、運がありませんでした。

Firefoxでこのエラーが発生します:

ペットのプロパティLocation.toStringを取得するための<code><http://player.vimeo.com></code>の許可が拒否されました

そしてChromeでは:

安全でないjavascriptがURLのフレームにアクセスしようとしています...URLが`http://player.vimeo.com/video/3718294?api=1のフレームから。 ドメイン、プロトコル、およびポートは一致する必要があります。

CDNからのfroogaloopのインポート:

<script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script>

私のJS:

$(function(){

    var vimeoPlayer = document.querySelector('iframe');

    $f(vimeoPlayer).addEvent('ready', ready);

    function ready(player_id) {

        froogaloop = $f(player_id);

        function setupEventListeners() {
            function onPlay() {
                froogaloop.addEvent('play',
                function(data) {
                    console.log('play event');
                });
            }

            function onPause() {

                froogaloop.addEvent('pause',
                function(data) {
                    console.log('pause event');
                });
            }

            function onFinish() {
                froogaloop.addEvent('finish',
                function(data) {
                    console.log('finish');
                });
            }
            onPlay();
            onPause();
            onFinish();
        }
        setupEventListeners();
    }

})

私のHTML:

<iframe src="http://player.vimeo.com/video/3718294?api=1" width="623" height="350" frameborder="0" id="iframe-video"></iframe>
4

5 に答える 5

79

何時間もの欲求不満の後...私は解決策を見つけました。

私はiframeでIDを使用していたので、どうやらvimeo APIは、フェッチしているURL(player_id = iframe-id)にパラメーターを追加するように強制します。

したがって、iFrameは次のようになります。

<iframe src="//player.vimeo.com/video/3718294?api=1&player_id=promo-vid" 
        width="623" height="350" frameborder="0"
        id="promo-vid">
</iframe>

これを指摘してくれたDrewBakerに特に感謝します:http://vimeo.com/forums/topic:38114#comment_5043696

于 2011-06-30T16:12:47.920 に答える
2

jQueryでiframeを選択すると、プレーヤー要素の作成中にエラーが発生しました。

var iframe = $('#player1');
var player = $f(iframe);

結果は

TypeError: d[f] is undefined

私にとっての解決策は、jQueryIDセレクターの最初の要素を選択することでした

var iframe = $('#player1')[0];
var player = $f(iframe);
于 2015-07-19T19:59:46.657 に答える
1

同一生成元ポリシーに違反していると思います。ここで、多くのイベント処理を行っている場合、それらは特別なfroogaloopAPI呼び出しを使用していることに気付くでしょう。

私はfroogaloopを使ったことがないので、おそらく間違っています。しかし、それは私の推測です。エラーは、iframeがブラウザのURLを変更しようとしていることを示唆しているようです。これは、SameOriginで許可されています。これが、APIがwindow.postMessageをラップする理由です。

于 2011-06-30T15:49:49.567 に答える
1

同様の問題が発生しましたが、この場合、FroggaloopをVimeo.Playerに置き換えた後でも、Chromeの新しい制限でした。「ユーザーが最初にドキュメントを操作しなかったため、play()が失敗しました...」というエラーが発生していました。さらに調査したところ、Chromeにいくつかの制限が追加されたようです。こちらをご覧くださいallow="autoplay"私の場合の解決策は、iframeに追加することでした。

于 2019-03-21T20:43:24.937 に答える
0

Froggaloop2でも同様の問題が発生しました。ビデオがキャッシュされている場合、readyイベントは(初期ロード時に)1回だけ発生するようです。解決策は、次のようにsrcを変更してiframeを取得することです。

$(iframe).attr('src', $(iframe).attr('src') + '#timestamp='+(new Date()).getTime());
于 2015-06-23T12:29:37.927 に答える