使用Jquery停止Vimeo视频

时间:2010-09-10 20:55:16

标签: javascript jquery vimeo

我需要停止使用新的oembed api(通用播放器)嵌入的Vimeo视频,但是当我尝试添加事件时,我收到此错误:

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

但我不知道为什么我得到这个错误,我添加了jquery和frogaloop api,我也在iframe中添加了id,但它仍然不起作用:(

完整的代码在这里:

http://tv.bisaccia.info

4 个答案:

答案 0 :(得分:2)

<\ n> Eli,请编辑你的帖子。正如乔所说,你被部分误导了。虽然跨域通信需要postMessage ,但 是通过调用“Froogaloop.init();”添加的DOM方法实现的。

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

注意:您需要从Vimeo网站获取froogaloop.js(或min变体)。

确保在调用init()之前设置了iFrame“src”,否则froogaloop将不执行任何操作。

答案 1 :(得分:0)

根据Mike的建议,调用:

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()调用的情况下工作。无论如何,为我工作。

谢谢你的时间!

答案 2 :(得分:0)

这不是正确答案,但可能适合您的情况,就像我的情况一样。当我关闭其包含的DOM元素时,我只想阻止我的Vimeo播放。我正在折叠它的容器并将其隐藏在视觉上,但音频继续播放并不必要地使用浏览器资源。

我现在所做的只是将iframe存储在变量中,将其从DOM中删除,然后立即替换它。我没有测试过跨浏览器,只测试过最新版本的Chrome和Safari Mobile。

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

再一次,Froogaloop真的是要走的路,但是我过去曾经遇到过这个问题,所以对于这种情况我一直在寻找简单的东西。显然你可以在没有JQuery的情况下做到这一点,结果相同。

答案 3 :(得分:-2)

你不能。

  • 没有DOM addEvent方法。
  • 您没有对Vimeo的跨域访问权限,因此您不允许使用iframe文档或抽象视图的JavaScript界面​​。

如果您想通过JavaScript与Vimeo进行交互,则必须让他们实施同时接受您的域名的postMessage API。