3

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

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

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

完整代码在这里:

http://tv.bisaccia.info

4

4 回答 4

2

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 将不执行任何操作。

于 2011-04-05T02:48:12.927 回答
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() 调用的情况下工作。无论如何,为我工作。

谢谢你的时间!

于 2011-07-27T12:46:06.570 回答
0

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

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

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

同样,Froogaloop 确实是要走的路,但是我过去遇到过问题,所以对于这种情况,我正在寻找简单的东西。显然,您可以在没有 JQuery 的情况下执行此操作并获得相同的结果。

于 2015-09-15T19:50:13.537 回答
-2

你不能。

  • 没有 DOMaddEvent方法。
  • 您没有对 Vimeo 的跨域访问权限,因此不允许您使用 JavaScript 接口与 iframe 的文档或抽象视图。

如果您想通过 JavaScript 与 Vimeo 交互,您必须让他们实现一个postMessage也接受您的域的 API。

于 2010-09-10T23:42:37.523 回答