Vimeo froogaloop不玩firefox 6

时间:2011-09-05 10:21:15

标签: javascript vimeo froogaloop

好吧,我真的非常非常讨厌vimeo的Froogaloop API。我需要3个小时或更长时间才能到达现在的位置。他们的网站上没有任何一个例子适合我,而网络上的任何一个都没有帮助!

我有一个使用vimeo和froogaloop的视频,点击按钮即可开始播放视频。我的代码来自this website,但我对其进行了修改,以便在#api_click上点击播放事件。

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');
        }
    });

3 个答案:

答案 0 :(得分:3)

我一直遇到同样的问题而且非常奇怪和令人愤怒。我提出了一个丑陋的黑客,我宁愿不使用但似乎有点工作。这还没有经过充分测试,我猜测必须有一个更好的方法,但是你去了:

看起来像Firefox在使用“display:none”隐藏Vimeo iframe时无法访问Froogaloop API。我不知道这是否是问题的真正原因,但我通过删除“display:none”并将iframe的宽度和高度设置为0让我的视频开始播放,然后使用jQuery动态设置在调用api('play')之前正确的值。

我还发现,如果您希望视频在用户关闭时暂停在当前位置(因此如果再次打开它会自动从同一个地方恢复),那么您需要通过设置隐藏视频来隐藏视频iframe的维度回到0而不是使用jQuery的hide()函数。

丑陋,是吗?

编辑:另一种解决方案是将iframe方式的初始位置设置在用户无法看到的位置,然后在显示视频时将其移动到正确的位置。然后将其移回屏幕以隐藏它。

答案 1 :(得分:2)

我遇到与 leakybag 相同的问题,当iframe设置为" display:none;"时,似乎事件似乎没有被触发。当事件发生时。

我对此的解决方案是,一旦iframe可见,我只绑定了vimeo api事件(设置为" display:none;")。

更确切地说,我在每张幻灯片上都有一个带有vimeo视频的滑块。所以我传递了一个回调函数,其中vimeo事件绑定到滑块,每次滑块更改时都会执行该滑块。然后,回调函数中的绑定仅针对活动幻灯片中的视频。

希望这有帮助,我认为这个问题应该在vimeo js api docs中提及。

编辑:仅供参考我使用的是firefox 29.0!

答案 2 :(得分:0)

我通过在元素交换发生时将'autoplay = 1'附加到iframe源来解决这个问题。像这样:

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