在使用api加载后,在vimeo iframe上更改src attr

时间:2013-05-15 23:23:00

标签: javascript html vimeo froogaloop

我不确定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');
  }

1 个答案:

答案 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');});