2011-09-05 84 views
1

Alrighty,我真的,真的很讨厌vimeo的Froogaloop API。我花了3个多小时才到达现在的位置。他们的例子都没有在他们的网站上为我工作,并且几乎没有任何帮助!Vimeo froogaloop不玩火狐6

我有一个视频使用vimeo和froogaloop开始播放视频点击一个按钮。我的代码是从this website,除了我修改它,以便点击#api_click点击事件。

iframe has?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

我一直有同样的问题,这是非常奇怪和气愤。我想出了一个丑陋的黑客,我不愿意使用,但似乎有点不习惯。这是没有经过充分测试,我猜测必须有一个更好的方式来做到这一点,但在这里你去:

它像SEEMS访问Froogaloop API时遇到了Vimeo iframe隐藏使用“显示:无”。我不知道这是否是问题的真正原因,但是我通过删除“display:none”并将iframe的宽度和高度设置为0,然后使用jQuery动态设置在调用API('play')之前正确的值。

我还发现,如果您希望视频在用户关闭时在当前位置暂停(因此如果他们再次打开视频会自动从相同位置恢复),则需要通过设置隐藏视频iframe的大小返回0,而不是使用jQuery的hide()函数。

丑,是吧?

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

0

当元素交换发生时,我通过将“autoplay = 1”附加到iframe源来解决此问题。事情是这样的:

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

我有同样的问题,因为leakybag,它真的好像当iframe中被设置为不触发的事件“显示:无;”当事件受到约束时。

我对此的解决方案是,只有在iframe可见时才设置vimeo api事件(设置为“display:none;”以外的内容)。

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

希望这可以帮助,我认为这个问题应该在vimeo js api文档中提及。

编辑:FYI我使用的是firefox 29.0!