Domanda

Ho bisogno di fermarmi un video Vimeo embedded con nuove API oEmbed (giocatore universale), ma quando provo ad aggiungere un evento ottengo questo errore:

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

Ma non perché ottengo questo errore, ho aggiunto jquery e l'API frogaloop, ho aggiunto anche ids agli iframe, ma ancora non lo fa di lavoro:: (

Il codice completo è qui:

http://tv.bisaccia.info

È stato utile?

Soluzione

Non è possibile.

  • Non c'è alcun metodo DOM addEvent.
  • Non hai accesso ad altri domini a Vimeo, quindi non si è permesso di avere l'interfaccia JavaScript con il documento del iframe o vista astratto.

Se si voleva interfacciarsi con Vimeo tramite JavaScript, si dovrebbe ottenere loro di implementare un'API postMessage che accetta anche il dominio.

Altri suggerimenti

Eli, si prega di modificare il tuo post. Come ha detto Joe, che si sta parzialmente male informato. Mentre postMessage è necessari per la comunicazione tra domini, è è attuata attraverso un metodo DOM aggiunto da una chiamata a "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;
    }

Nota. Dovrai froogaloop.js afferrare (o min variante) dal sito Vimeo

Assicurarsi che l'iFrame "src" è impostato prima di chiamare init (), altrimenti froogaloop farà nulla.

Come da suggerimento di Mike, invocando:

Froogaloop.init();

fa fare il lavoro di controllo API. Nel mio caso:

<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>

Pagina Strano ... di Moogaloop autore demo ha di lavoro senza l'init () chiamata. In ogni caso, ha funzionato per me.

Grazie per il vostro tempo!

Questa non è la risposta corretta, ma può funzionare per la vostra situazione come ha fatto per il mio. Volevo semplicemente per fermare il mio Vimeo da suonare quando ho chiuso il suo elemento DOM che contiene. Mi stava crollando il suo contenitore e che nascosi visivamente ma l'audio continuato a giocare e risorse l'uso del browser inutilmente.

Quello che faccio ora è semplicemente memorizzare l'iframe in una variabile, rimuoverlo dal DOM, poi sostituirlo immediatamente. Non ho ancora testato tutti i browser, solo l'ultima versione di Chrome e Safari Mobile.

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

Anche in questo caso, Froogaloop è davvero la strada da percorrere, ma ho avuto problemi con esso in passato, quindi per questa situazione che stavo cercando qualcosa di semplice. Ovviamente si potrebbe fare questo senza JQuery con gli stessi risultati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top