установить autoPlay false на Flowplayer в jQuery - PullRequest
1 голос
/ 16 ноября 2011

Я использую jQuery и Flowplayer для преобразования ссылок на FLV-файлы во встроенные видео, например:

$(document).ready(function() {
    if($('a[type^="video"]').length > 0) {
        $('a[type^="video"]').each(function() {
            var video_path = $(this).attr('href');
            var video_box  = $(this).parent();
            video_box.html('');
            video_box.css('width', '680px');
            video_box.css('height', '460px');
            video_box.flowplayer('/sites/default/files/flowplayer-3.2.7.swf', video_path);
        });
    }
});

Это работает нормально, за исключением того, что все видео начинают воспроизводиться одновременно.Я попытался добавить autoPlay: false несколькими различными способами, но пока ни один из них не сработал.Из документации кажется, что я должен быть в состоянии сделать это следующим образом:

video_box.flowplayer('/sites/default/files/flowplayer-3.2.7.swf', video_path, {clip: {autoPlay: false}});

Но это не работает.

Ответы [ 4 ]

3 голосов
/ 19 февраля 2012

@ Кевин

Вам не нужен дополнительный div вокруг тега flowplayer-a-tag.Все, что вам нужно сделать, это установить display: block на a-tag.

Таким образом, ваш код можно сжать до этого:

2 голосов
/ 16 ноября 2011

Вы пробовали синтаксис, который используется в документации ? В каждом вашем цикле вы можете сделать:

$f(this.parentNode, {src: "flowplayer.swf"}, {
  clip: {
    url: video_path
    autoPlay: false,
    onStart: function(clip){alert("Clip "+ clip.url);}  // attach event listener
  },
});

Примечание: строка if($('a[type^="video"]').length > 0) { не нужна, поскольку jQuery будет циклически проходить по элементам, если они есть, в противном случае просто пропускает блок.

2 голосов
/ 18 ноября 2011

Я заставил его работать так:

$(document).ready(function() {
    $('a[type^="video"]').each(function(index) {
        var video_path = $(this).attr('href');
        var video_box  = $(this).parent();
        video_box.html('');
        video_box.css('width', '680px');
        video_box.css('height', '460px');
        video_box.attr('id', 'player-' + index);
        $f(video_box.attr('id'), '/sites/default/files/flowplayer-3.2.7.swf', {
            clip: {
                autoPlay: false,
                url: video_path
            }
        });
    });
});

Ключом к работе функции $f() было присвоение ей идентификатора. У div-ов, которые я использовал, не было идентификаторов, поэтому я дал им один со строкой video_box.attr('id', 'player-' + index);.

Я до сих пор не знаю, почему я не смог заставить метод jQuery object.flowplayer () принять свойство autoPlay: false. Но я полагаю, что использование функции $f() также хорошо. Спасибо за помощь.

1 голос
/ 16 ноября 2011

Вы можете передать flowplayer объект опций, одним из которых является autoplay, вот документация для этого: http://flowplayer.org/documentation/configuration/

Это пример из приведенной выше страницы:

flowplayer("player", {
    src: "flowplayer.swf"
}, {
    clip:  {
        autoPlay: false,
        autoBuffering: true
    }
});

Flowplayer имеет множество опций, которые вы можете установить при инициализации, включая привязки событий для таких вещей, как onPause и onPlay.

...