Остановите видео Vimeo с Jquery

Мне нужно остановить встроенное видео Vimeo с новым oembed api (универсальный проигрыватель), но когда я пытаюсь добавить событие, я получаю эту ошибку:

Uncaught TypeError: Object #<an HTMLIFrameElement> has no method 'addEvent'

Но я не понимаю, почему я получаю эту ошибку, я добавил jquery и API frogaloop, также я добавил идентификаторы в iframes, но это все равно не работает::(

Полный код здесь:

http://tv.bisaccia.info/

4 ответа

Решение

Ты не можешь

  • Там нет DOM addEvent метод.
  • У вас нет междоменного доступа к Vimeo, поэтому вам не разрешено иметь интерфейс JavaScript с документом iframe или абстрактным представлением.

Если вы хотите взаимодействовать с Vimeo через JavaScript, вы должны будете заставить их реализовать postMessage API, который также принимает ваш домен.

Эли, пожалуйста, отредактируйте свой пост. Как сказал Джо, вы частично дезинформированы. Хотя postMessage необходим для междоменной связи, он реализуется с помощью метода DOM, добавляемого вызовом "Froogaloop.init();";

is_embed_iframe = _this.iframe_pattern.test(cur_frame.getAttribute('src')); 

if (is_embed_iframe) {
        cur_frame.api = _that.api;
        cur_frame.get = _that.get;
        cur_frame.addEvent = _that.addEvent;
    }

Примечание: вам нужно будет загрузить froogaloop.js (или вариант min) с сайта Vimeo.

Убедитесь, что iFrame "src" установлен перед вызовом init(), иначе froogaloop ничего не сделает.

Согласно предложению Майка, ссылаясь на:

Froogaloop.init();

Работает ли управляющий API. В моем случае:

<iframe id="player_1" src="http://player.vimeo.com/video/26859570?js_api=1&amp;js_swf_id=player_1&amp;title=0&amp;byline=0&amp;portrait=0" width="620" height="354" frameborder="0"></iframe>
<script>
    $(document).ready(function() {
        Froogaloop.init();
        $("#player_1").moogaloop({
            load: function(element) {
                $("#segment1").click(function() { element.moogaloop('seekTo', "7"); });
            }
        });
    });
</script>

Странно... Демонстрационная страница автора Moogaloop работает без вызова init(). Во всяком случае, работал на меня.

Спасибо за ваше время!

Это не правильный ответ, но может работать для вашей ситуации так же, как для моей. Я просто хотел остановить воспроизведение моего Vimeo, когда закрыл содержащий его элемент DOM. Я разрушал его контейнер, и это скрывало его визуально, но звук продолжал проигрывать и использовать ресурсы браузера без необходимости.

Сейчас я просто сохраняю iframe в переменной, удаляю его из DOM, а затем немедленно заменяю. Я НЕ тестировал во всех браузерах, только последние версии Chrome и Safari Mobile.

var container = $("#VimeoContainer");
var iframe = container.find("iframe");
iframe.remove();
container.append(iframe);

Опять же, Froogaloop - действительно верный путь, однако у меня были проблемы с ним в прошлом, поэтому для этой ситуации я искал что-то простое. Очевидно, вы могли бы сделать это без JQuery с теми же результатами.

Другие вопросы по тегам