API jQuery и Vimeo Froogaloop
Я создаю плагин для 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/?
,
Я получаю эту ошибку:
Ошибка типа: результат выражения '$f(player).vimeoPlayer' [undefined] не является объектом.
2 ответа
Одна из проблем заключается в том, что addEvent - это как определенная вами функция, так и метод объекта $f(player). Похоже, вы путаете их. Метод addEvent объекта $f(player) принимает только два аргумента: имя события player и вызываемую функцию. Его следует использовать как $ f (your-iframe).addEvent ('событие vimeo', your_function);
Ваша функция addEvent объединит события между методами IE и W3C. Это не нужно, потому что вы используете JQuery. jQuery (что угодно).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!!!");
}
Мне было трудно найти нужную информацию о API Vimeo Froogaloop, но после того, как я около десятка раз обыскивал игровую площадку Vimeo Froogaloop API, я начинаю понимать, как она работает.
Удачи!
Вместо $f(player).vimeoPlayer.addEvent
пытаться $(this).addEvent
,