I'm building a plugin to WordPress and so far so good with the PHP library. But I am having some issues with the JavaScript API.
I'm trying to use it with jQuery, and I think the WordPress version of jQuery is messing with the $f
shortcut. Why wouldn't this work?
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();
});
You can see it in action at temp.woodshop.tv/?work/?dickies-campaign/?
.
I get this error:
TypeError: Result of expression '$f(player).vimeoPlayer' [undefined] is not an object.
One issue is that addEvent is both a function that you've defined and also a method of the $f(player) object. It appears that you're confusing the two. The addEvent method of the $f(player) object only takes two arguments, the name of the player event and the function to be called. It should be used as $f(your-iframe).addEvent('vimeo event', your_function);
Your addEvent function will unify events between IE and W3C methods. It's not needed because you're using jQuery. jQuery(whatever).click() does the same thing. I don't see any part of your snippet where you need it but if you do, I'd just use the jQuery method.
Also, the video player object should be $f(player) instead of $f(player).vimeoPlayer
Try this
jQuery('iframe.vimeo-player').each(function(){
$f(this).addEvent('ready', ready);
});
Another thing to note is that any additional player events need to be added from your ready callback function. For example:
function ready(player_id){
$f(player_id).addEvent('play', play);
$f(player_id).api('play');
alert("Ready!!!");
}
function play(){
alert("Playing!!!");
}
I've had a hard time finding the info I want on Vimeo's Froogaloop api but after scouring Vimeo Froogaloop API Playground about a dozen times I'm starting to get the idea of how it works.
Good luck!
Instead of $f(player).vimeoPlayer.addEvent
try $(this).addEvent
.
来源:https://stackoverflow.com/questions/5999357/jquery-and-vimeo-froogaloop-api