【问题标题】:jQuery and Vimeo Froogaloop APIjQuery 和 Vimeo Froogaloop API
【发布时间】:2011-08-25 08:32:09
【问题描述】:

我正在为 WordPress 构建一个插件,到目前为止,PHP 库非常好。但我在 JavaScript API 上遇到了一些问题。

我正在尝试将它与 jQuery 一起使用,我认为 jQuery 的 WordPress 版本与 $f 快捷方式混淆了。为什么这不起作用?

var vimeoPlayer = {

    init: function() {
        var vimeoPlayers = document.querySelectorAll('iframe'),
        player;

        jQuery('iframe.vimeo-player').each(function(index, iframe){
            player = vimeoPlayers[index];
            $f(player).vimeoPlayer.addEvent('ready', vimeoPlayer.ready);
        });
    },

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

    ready: function(player_id) {
        alert(player_id);
    }
}

jQuery(document).ready(function($){
    vimeoPlayer.init.call();
});

您可以在 temp.woodshop.tv/?work/?dickies-campaign/? 看到它的实际效果。

我收到此错误:

TypeError: 表达式 '$f(player).vimeoPlayer' [undefined] 的结果不是对象。

【问题讨论】:

    标签: jquery events vimeo froogaloop


    【解决方案1】:

    一个问题是 addEvent 既是您定义的函数,也是 $f(player) 对象的方法。看来您混淆了两者。 $f(player) 对象的 addEvent 方法只接受两个参数,播放器事件的名称和要调用的函数。它应该用作 $f(your-iframe).addEvent('vimeo event', your_function);

    您的 addEvent 函数将统一 IE 和 W3C 方法之间的事件。它不是必需的,因为您使用的是 jQuery。 jQuery(whatever).click() 做同样的事情。我没有看到你需要它的 sn-p 的任何部分,但如果你这样做了,我只会使用 jQuery 方法。

    另外,视频播放器对象应该是 $f(player) 而不是 $f(player).vimeoPlayer

    试试这个

    jQuery('iframe.vimeo-player').each(function(){
        $f(this).addEvent('ready', ready);
    });
    

    另外需要注意的是,任何额外的玩家事件都需要从你的就绪回调函数中添加。例如:

    function ready(player_id){
        $f(player_id).addEvent('play', play);
        $f(player_id).api('play');
        alert("Ready!!!");
    }
    function play(){
        alert("Playing!!!");
    }
    

    我很难在 Vimeo 的 Froogaloop api 上找到我想要的信息,但在搜索了大约十几次 Vimeo Froogaloop API Playground 之后,我开始了解它是如何工作的。

    祝你好运!

    【讨论】:

    • 嘿乔恩,我在这里把它变成了一个工作示例:labs.funkhausdesign.com/examples/vimeo/…
    • 非常感谢您! Vimeo 自己的 API 示例还有一些不足之处。
    • 非常感谢,这比 vimeo 的游乐场示例对我的帮助更好(花了几个小时玩弄它之后)。
    【解决方案2】:

    试试$(this).addEvent,而不是$f(player).vimeoPlayer.addEvent

    【讨论】:

    • 谢谢,但是 $f() 是 Vimeo API 的快捷方式,所以它需要在那里。然而,我确实像这样让它更接近:Froogaloop(this).addEvent('ready', vimeoPlayer.ready);但这给出了“eventCallbacks[target_id] 在第 22 行未定义”。他们的 API 出错。
    • 让我们分析一下:“$f(player).vimeoPlayer.addEvent('ready', vimeoPlayer.ready)”,这里 $f(player) 需要一个 iframe(或 HTML)标签作为输入,应该返回以 vimeoPlayer 作为对象的东西(因为只有这样代码才是正确的)。 . .但仔细检查发现 $f(player) 既没有返回任何东西,也没有在此处用作对象之前声明 vimeoPlayer ......所以在这种情况下我不知道如何帮助你:-(我只能找出问题...对不起德鲁
    • 或:jQuery('iframe.vimeo').each(function(){ Froogaloop(this).addEvent('ready', ready); });
    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 2012-04-09
    • 2011-08-02
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2014-09-11
    • 2012-01-17
    相关资源
    最近更新 更多