在ajax调用的视频之后使用Vimeo的api

时间:2013-02-06 00:07:14

标签: javascript ajax vimeo

我正在使用网站的garnish主题,当访问者点击作品集中的某个项目时,它会加载帖子的内容。该帖子由vimeo中的一个或多个视频组成,通过iframe调用,如下所示:

<iframe id="player_0" src="http://player.vimeo.com/video/57038297?title=0&amp;byline=0&amp;portrait=0&amp;color=FF9A00&amp;api=1&amp;player_id=player_0" frameborder="0" width="632" height="356" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>

我已经使用vimeo的froogaloop从外部链接(here's a very basic test)停止/卸载视频。这是控件的代码:

var vimeoPlayers = document.querySelectorAll('iframe'), 
    player;

for (var i = 0, length = vimeoPlayers.length; i < length; i++) {
    player = vimeoPlayers[i];
    $f(player).addEvent('ready', ready);
}

function addEvent(element, eventName, callback) {
    if (element.addEventListener) { 
        element.addEventListener(eventName, callback, false); 
    }
    else { 
        element.attachEvent(eventName, callback, false); 
    }
}

function ready(player_id) {
    var container = document.getElementById(player_id),
        froogaloop = $f(player_id);
    $("a.stopvid").on('live', function(){ froogaloop.api('unload'); });
}

但是这次我似乎无法在ajax调用之后使用api作为视频加载。

我尝试将上面的代码包含在$(document).ajaxComplete(function(event, xhr, settings) { ... });中,但没有运气。

这是一个test site来看待它。菜单中的投资组合链接,然后点击第一项。它会加载内容和右上角的一个小十字,应该停止视频,但不会。

帮助将受到高度赞赏,我很遗憾。

1 个答案:

答案 0 :(得分:0)

要做的第一件事是检查您的网页上是否有任何javascript错误 您的iframe选择器可能是通用的,您可能会捕获其他“插件”(如Facebook)使用的其他iframe。

要工作,froogaloop ready fonction需要iframe上的id。如果iframe上没有id,则ready事件将不会收到任何内容,并且player_id将是未定义的。

由于您使用的是JQuery,请通过以下方式更改脚本的第一行:

var vimeoPlayers = $("iframe#player_0"), player;  

使用此行,您将确保只选择所需的iframe。