【问题标题】:Stop a Vimeo Video with Jquery使用 Jquery 停止 Vimeo 视频
【发布时间】:2010-09-10 20:55:16
【问题描述】:

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

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

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

完整代码在这里:

http://tv.bisaccia.info

【问题讨论】:

    标签: javascript jquery vimeo


    【解决方案1】:

    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 将什么也不做。

    【讨论】:

      【解决方案2】:

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

      感谢您的宝贵时间!

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          【解决方案4】:

          你不能。

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

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

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-27
          • 2011-01-08
          • 2017-12-22
          • 1970-01-01
          相关资源
          最近更新 更多