好吧,我真的非常非常讨厌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');
}
});
答案 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)