1

好吧,我真的,真的,真的很讨厌 vimeo 的 Froogaloop API。我花了 3 个小时或更长时间才到达现在的位置。他们的示例在他们的网站上都没有对我有用,而且网络上几乎没有任何帮助!

我有一个使用 vimeo 和 froogaloop 的视频,通过单击按钮开始播放视频。我的代码来自这个网站,除了我修改了它以便在#api_click 的点击时触发播放事件。

iframe 有 ?api=1&player_id=basketball_video。该视频确实开始在 Chrome、Safari、IE9 甚至 IE8 中播放!但不是火狐?!

我的播放代码是:

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

3 回答 3

3

我也遇到了同样的问题,而且很奇怪而且很生气。我想出了一个丑陋的黑客,我不想使用它,但它似乎有点工作。这没有经过很好的测试,我猜必须有更好的方法来做到这一点,但你去吧:

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

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

丑陋吧?

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

于 2011-09-12T20:06:52.677 回答
2

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

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

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

希望这会有所帮助,我认为应该在 vimeo js api 文档中提到这个问题。

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

于 2014-05-07T08:39:56.720 回答
0

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

iframe = $(this).find('iframe')
src = iframe.attr('src') 
src += '&autoplay=1'
iframe.attr('src', src) 
于 2013-07-19T21:33:52.610 回答