我不确定vimeo API是否允许这样做:
我有这个HTML代码:
<iframe id="vm-player"
src="http://player.vimeo.com/video/27855315?api=1&player_id=vm-player"
frameborder="0"
webkitAllowFullScreen mozallowfullscreen allowFullScreen>
</iframe>
我使用Vimeo的froogaloop.js获得了这段JavaScript代码:
var iframe = $('#vm-player')[0];
var vmPlayer = $f(iframe);
function ready(player_id) {
// Keep a reference to Froogaloop for this player
var vmPlayer = $f(player_id);
}
$(window).bind('ready', function() {
//Attach the ready event to the iframe
$f(document.getElementById('vm-player')).addEvent('ready', ready);
});
当我在此之后调用vmPlayer.api('play');
时,它会起作用。但是在我通过JavaScript更改iframe上的src属性后,vmPlayer.api()调用没有做任何事情。它似乎以某种方式失去了对玩家的引用。
这是我通过jQuery更改src属性的方法:
function playVmVideo(id) {
$('#vm-player').attr('src',
'http://player.vimeo.com/video/'
+ id + '?api=1&player_id=vm-player');
vmPlayer.api('play');
}
答案 0 :(得分:2)
我不知道如果这有帮助,但尝试使用.prop()
函数而不是attr。它可能有助于触发重新加载。另一方面,您可以在iframe上使用事件回调来检测何时加载。由于您在重置src后直接调用api函数,因此可能尚未加载。我相信它的功能是$('#vm-player').load(function(e) { vmPlayer.api('play'); });
如果该加载函数不起作用,那是因为已经知道jQuery的加载会发生两次。一旦空了,一旦真正的最终负载。如果是这种情况并且它会给您带来麻烦,您可能需要进行一些简单的窗口处理。可能是这样,但没有gaurentees document.getElementById('iFrameID').contentWindow.onload(function() {vmPlayer.api('play');});