我似乎无法抓住“准备好”的事件。
Froogaloop:
<script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script>
我的剧本:
$.getJSON('http://www.vimeo.com/api/oembed.json?url=' + encodeURIComponent('http://vimeo.com/27027307') + '&width=300&callback=?', function(data){
$('#video-container').html(data.html); //puts an iframe embed from vimeo's json
$('#video-container iframe').ready(function(){
player = document.querySelectorAll('iframe')[0];
$f(player).addEvent('ready', function(id){
console.log('success');
});
});
});
视频加载正常。这是我在控制台中收到的消息:
Uncaught TypeError: Cannot read property 'ready' of undefined
我需要使用事件监听器来检测暂停等。我看到this post,但不幸的是,主要区别在于我是通过JSON动态加载的。另外,Vimeo有一个working example的Froogaloop,但不是jQuery。
提前致谢!!!
答案 0 :(得分:23)
编辑(2014年8月):我最近写了jQuery Vimeo plugin,它基本上更优雅地解决了这个问题。但是解决方案,如果你是硬编码,这是下面的:
加载Vimeo视频时,您必须在网址中包含查询字符串&api=1
。这允许您进行API事件调用。如果您要加载多个视频,Vimeo还需要&player_id=SOME_ID
,这需要匹配它加载的iframe上的id(或者在我的情况下,使用jQuery在加载JSON后将其添加到iframe,因为我是动态创建的。)
我在这上面失去了半天。以下是我的最终代码,如果它对其他任何试图动态加载Vimeo视频的人都有帮助。
使用Vimeo的Froogaloop框架
<script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script>
我的js
var videoData = [
{
'title':'The Farm',
'id':'farmvideo',
'videoURL':'http://vimeo.com/27027307'
}];
$.getJSON('http://www.vimeo.com/api/oembed.json?url=' + encodeURIComponent(videoData[0]['videoURL']) + '&api=1&player_id='+ videoData[0]['id'] +'&width=300&callback=?', function(data){
$('#video-container').html(data.html); //puts an iframe embed from vimeo's json
$('#video-container iframe').load(function(){
player = document.querySelectorAll('iframe')[0];
$('#video-container iframe').attr('id', videoData[0]['id']);
$f(player).addEvent('ready', function(id){
var vimeoVideo = $f(id);
console.log('success');
});
});
});
答案 1 :(得分:8)
尝试使用load
事件代替iframe的ready事件。
你的第三行是:
$('#video-container iframe').load(function(){
答案 2 :(得分:4)
我已经“分叉”你的例子,并使用froogaloop api创建了一个版本,显示使用多个视频播放/暂停vimeo。所以如果你开始播放一个视频,所有其他视频都停止播放:http://jsfiddle.net/nerdess/D5fD4/3/