Измените атрибут src на vimeo iframe после того, как он был загружен с API
Я не уверен, позволяет ли API vimeo это:
У меня есть этот HTML-код:
<iframe id="vm-player"
src="http://player.vimeo.com/video/27855315?api=1&player_id=vm-player"
frameborder="0"
webkitAllowFullScreen mozallowfullscreen allowFullScreen>
</iframe>
И у меня есть этот код JavaScript, используя froogaloop.js из Vimeo:
var iframe = $('#vm-player')[0];
var vmPlayer = $f(iframe);
function ready(player_id) {
// Keep a reference to Froogaloop for this player
var vmPlayer = $f(player_id);
}
$(window).bind('ready', function() {
//Attach the ready event to the iframe
$f(document.getElementById('vm-player')).addEvent('ready', ready);
});
Когда я звоню vmPlayer.api('play');
после этого все работает. Но после того, как я изменил атрибут src в iframe через JavaScript, вызовы vmPlayer.api() ничего не делают. Похоже, что он теряет ссылку на игрока как-то. Вот как я изменяю атрибут src через jQuery:
function playVmVideo(id) {
$('#vm-player').attr('src',
'http://player.vimeo.com/video/'
+ id + '?api=1&player_id=vm-player');
vmPlayer.api('play');
}
1 ответ
Я не знаю, если это поможет, но попробуйте использовать .prop()
функция вместо attr. Это может помочь перезагрузить. Другое дело, что вы можете использовать обратный вызов события в iframes, чтобы определить, когда оно загружено. Поскольку вы вызываете функцию API непосредственно после сброса src, она, вероятно, не загружена. Я считаю, что функция для этого $('#vm-player').load(function(e) { vmPlayer.api('play'); });
Если эта функция загрузки не работает, это потому, что известно, что загрузка jQuery срабатывает дважды. Один раз на пустом, и один раз на истинной окончательной загрузке. Если это так, и это вызывает проблемы для вас, вам, возможно, придется перейти к некоторой обработке окна JS. Возможно, так, но НИКАКИХ гарантов document.getElementById('iFrameID').contentWindow.onload(function() {vmPlayer.api('play');});