Vimeo froogaloop не играет в Firefox 6 - PullRequest
       21

Vimeo froogaloop не играет в Firefox 6

1 голос
/ 05 сентября 2011

Хорошо, я действительно, очень, очень ненавижу API Froogaloop от vimeo.Мне понадобилось 3 часа или больше, чтобы добраться туда, где я сейчас нахожусь.Ни один из их примеров не работал для меня на их веб-сайте, и почти никто в сети не помог!

У меня есть видео с использованием vimeo и froogaloop, чтобы начать воспроизведение видео по нажатию кнопки.Мой код с этого сайта , за исключением того, что я изменил его, чтобы событие воспроизведения запускалось по нажатию кнопки # api_click.

У iframe есть? Api = 1 & player_id = basket_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');
        }
    });

Ответы [ 3 ]

3 голосов
/ 13 сентября 2011

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

Это похоже на Firefox, у которого возникают проблемы с доступом к API Froogaloop, когда Vimeoiframe скрывается с помощью «display: none».Я не знаю, является ли это фактической причиной проблемы или нет, но я заставил мое видео начать воспроизведение, удалив «display: none» и установив ширину и высоту iframe равными 0, а затем используя jQuery для динамической установкиправильные значения непосредственно перед вызовом api ('play').

Я также обнаружил, что если вы хотите, чтобы видео было приостановлено на текущей позиции, когда пользователь закрывает его (чтобы оно автоматически возобновлялось с того же места, если они открывают его снова), вам нужно скрыть видеоустановив размеры iframe обратно на 0, а не используя функцию hide () jQuery.

Ужасно, да?

Редактировать: Альтернативное решение - установить начальную позицию iframe вне экранапользователь не может увидеть его, а затем переместить его в правильное положение при отображении видео.Затем переместите его обратно за экран, чтобы скрыть.

2 голосов
/ 07 мая 2014

У меня была та же проблема, что и leakybag , и действительно кажется, что события не запускаются, если для iframe было установлено значение "display: none;"когда события были связаны.

Мое решение было в том, что я связывал события vimeo api только после того, как был виден iframe (для чего-то еще, кроме «display: none;»).

Чтобы быть более точным, у меня был слайдер с видео vimeo на каждом слайде.Поэтому я передал функцию обратного вызова с привязкой события vimeo к слайдеру, который выполняется каждый раз, когда изменяется слайд.В этом случае привязка в функции обратного вызова предназначается только для видео на активном слайде.

Надеюсь, это поможет, я думаю, что эту проблему следует упомянуть в документах vimeo js api.

Редактировать: К вашему сведению, я использовал Firefox 29.0!

0 голосов
/ 20 июля 2013

Я справился с этим, добавив autoplay = 1 к источнику iframe, когда произошла перестановка элементов. Примерно так:

iframe = $(this).find('iframe')
src = iframe.attr('src') 
src += '&autoplay=1'
iframe.attr('src', src) 
...