2010-09-10 99 views
3

我需要停下来嵌入新透过oEmbed API(万能播放器),但Vimeo的视频,当我尝试添加一个事件我得到这个错误:停止Vimeo的视频与jQuery

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

但我不为什么我得到这个错误,我添加的jQuery和frogaloop API,还我添加的ID将内部框架,但它仍然不能正常工作::(

完整的代码是在这里:

http://tv.bisaccia.info

回答

-2

你不能。

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

如果您想通过JavaScript与Vimeo进行交互,您必须让他们实现postMessage API,该API还可以接受您的域。

+0

ah,好:(我认为它的工作原因是我在这里阅读它:http://github.com/vimeo/froogaloop/blob/master/README(和这里http://vimeo.com/api/docs/moogaloop#universal)但是,感谢回复:) – patrick 2010-09-11 16:23:05

+1

为什么你会说'你不能',当你可以。这完全是误导。 – 2013-02-12 16:26:14

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(或最小变体)。

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

0

按照小李的建议,调用:

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

谢谢你的时间!

0

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

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

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

再次,Froogaloop是真的要走的路,但我已经受够了它的问题在过去那么针对这种情况我一直在寻找简单的东西。显然你可以在没有JQuery的情况下做到这一点,并得到相同的结果。