16

我使用他们的 froogaloop 库为 vimeo 视频编写了一个 AngularJS 指令,该指令具有内置的播放/暂停功能。

效果很好!唯一的问题是页面首次加载时出现以下错误。

无法在“DOMWindow”上执行“postMessage”:提供的目标来源(“ http://player.vimeo.com ”)与收件人窗口的来源不匹配

我在指令中初始化 froogaloop 对象是否错误?任何建议将不胜感激。

你可以在这里查看 plunker:http: //plnkr.co/edit/GKWNk3LhX0MR3lhpfqyA

4

2 回答 2

6

我建议在onLoad事件中执行代码 from <iframe>。然后确保当 iframe 准备好接收消息时代码将执行。

有很多方法可以做到:

  • 如果您的项目中已经有 jQuery,则可以使用它:$('iframe').load(callback)
  • 编写一个 EventListener:iframe_element.addEventListener('load', callback)
  • 使用普通的 onload 回调:iframe_element.onload = callback

callback使用Froogaloop的方法在哪里。

但是您必须知道,其中一些解决方案可能在某些旧/MS 浏览器浏览器上存在一些缺点。

于 2014-05-13T16:24:51.683 回答
2

对我来说,看起来 angularjs 在实际渲染页面上的 iframe 之前触发了 Player API。至少如果我推迟 scope.$watch 它工作正常:

$timeout(function() {
    scope.$watch('controlBoolean', function() {/* your code goes here */});
});
于 2014-02-25T12:23:10.207 回答