我正在为 WordPress 构建一个插件,到目前为止,PHP 库表现良好。但我在使用 JavaScript API 时遇到了一些问题。
我正在尝试将它与 jQuery 一起使用,并且我认为 WordPress 版本的 jQuery 与 $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: Result of expression '$f(player).vimeoPlayer' [undefined] is not an object.
最佳答案
一个问题是 addEvent 既是您定义的函数,也是 $f(player) 对象的方法。看来您混淆了两者。 $f(player) 对象的 addEvent 方法仅接受两个参数,即玩家事件的名称和要调用的函数。它应该用作 $f(your-iframe).addEvent('vimeo event', your_function);
您的 addEvent 函数将统一 IE 和 W3C 方法之间的事件。不需要它,因为您正在使用 jQuery。 jQuery(whatever).click() 做同样的事情。我没有看到您需要的代码片段的任何部分,但如果您需要,我只会使用 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大约十几次我开始了解它是如何工作的。
祝你好运!
关于jQuery 和 Vimeo Froogaloop API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5999357/