1

Froogaloopライブラリを使用して、さまざまなサイトに埋め込まれたVimeoビデオプレーヤーを監視することに成功しました(Chrome拡張機能の機能のため

vimeo.com自体でも同じことをしたいのですが、vimeo.comページのビデオプレーヤーがiframeに埋め込まれていないため、Froogaloopはそれらとインターフェイスできません。

誰かが現在の再生時間を取得し、vimeo.comの(iframeされていない)ビデオの再生/一時停止イベントリスナーを接続する方法を教えてもらえます

4

1 に答える 1

1

さらに調査した結果、次の基本的な解決策を思いつきました。

// Once the vimeo.com player <object> is ready:

// find vimeo player(s)
var vimeoPagePlayers = document.querySelectorAll('object[type*=flash][data*=moogaloop]');
if (vimeoPagePlayers.length == 0) {
    return;
}

// attach event listeners to player(s)
for (var i = 0; i < vimeoPagePlayers.length; i++) {
    var player = vimeoPagePlayers[i];
    // sometimes .api_addEventListener is not available immediately after
    // the <object> element is created; we do not account for this here
    player.api_addEventListener('onProgress', 'onVimeoPageProgress');
    player.api_addEventListener('onPause', 'onVimeoPagePause');
}

function onVimeoPagePause() {
    // video has been paused or has completed
}

function onVimeoPageProgress(data) {
    // video is playing
    var seconds;
    if (typeof(data) == 'number') {
        // on vimeo.com homepage, data is a number (float)
        // equal to current video position in seconds
        seconds = data;
    }
    else {
        // on vimeo.com/* pages, data is a hash
        // of values { seconds, percent, duration }
        seconds = data.seconds;
    }

    // do something with seconds value
}

これは、vimeo.com(テストされていない)のHTML5モードのビデオでは機能しない場合があります。

また、vimeo.comページがDOM操作を介して既存のプレーヤーを別のプレーヤーに置き換える場合も機能しません。これらの状況は、 MutationObserverのようなもので処理できると思います。

于 2013-01-21T21:23:21.967 に答える