Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vimeo Froogaloop API未识别事件_Javascript_Jquery_Iframe_Vimeo_Froogaloop - Fatal编程技术网

Javascript Vimeo Froogaloop API未识别事件

Javascript Vimeo Froogaloop API未识别事件,javascript,jquery,iframe,vimeo,froogaloop,Javascript,Jquery,Iframe,Vimeo,Froogaloop,我试图使用froogaloop API识别vimeo的onPlay、onPause和onFinish事件。我用这东西试了我能想象到的一切,但没有运气 我在Firefox上遇到以下错误: 镀铬: 从CDN导入froogaloop: <script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script> 我的HTML: <iframe src="http://player.vimeo.com/vide

我试图使用froogaloop API识别vimeo的onPlay、onPause和onFinish事件。我用这东西试了我能想象到的一切,但没有运气

我在Firefox上遇到以下错误:

镀铬:

从CDN导入froogaloop:

<script src="http://a.vimeocdn.com/js/froogaloop2.min.js"></script>
我的HTML:

<iframe src="http://player.vimeo.com/video/3718294?api=1" width="623" height="350" frameborder="0" id="iframe-video"></iframe>

我认为你违反了法律。您会注意到,在进行大量事件处理的地方,它们使用特殊的froogaloop API调用


我从未使用过froogaloop,所以我可能错了。但这是我的猜测。这些错误似乎表明iframe正在试图修改浏览器中的URL,而这是同一来源允许的。这就是API为您包装window.postMessage的原因。

在经历了数小时的挫折之后。。。我找到了解决办法

因为我在iframe上使用了一个ID。。。显然,VimeoAPI强制您将参数添加到正在获取的URL(player_id=iframe id)

因此,iFrame应该如下所示:



特别感谢Drew Baker指出这一点:

Froggaloop2也有类似的问题-如果视频被缓存,ready事件将只触发一次(在初始加载时)。解决方案是通过更改src检索iframe,如下所示:

$(iframe).attr('src', $(iframe).attr('src') + '#timestamp='+(new Date()).getTime());

使用jQuery选择iframe时,创建播放器元素时出错

var iframe = $('#player1');
var player = $f(iframe);
导致

TypeError: d[f] is undefined
我的解决方案是在jQuery ID选择器中选择第一个元素

var iframe = $('#player1')[0];
var player = $f(iframe);

我有一个类似的问题,但在本例中,在用Vimeo.Player替换Froggaloop之后,它仍然是chrome中的一个新限制。我收到错误“play()失败,因为用户没有首先与文档交互…”。经过进一步研究,Chrome似乎增加了一些限制。我的解决方案是在iframe中添加
allow=“autoplay”

我能做些什么来解决这个问题呢?更多地遵循他们的模式。例如,看看他们的SimpleButtons示例;他们的evenListener回调都是对froogaloop API方法的调用。由于您要向尝试与浏览器交互的froogaloop对象添加事件侦听器,因此必须通过它们的API执行此操作。另外,看看他们的API,我没有看到为froogaloop对象定义的“addEvent”,只是一个addEventListener。他们在封装addEventListener的示例代码中定义自己的addEvent。让我觉得使用与同一来源相关的内置addEvent有问题。我也有一些类似的问题。默认情况下,我的视频是隐藏的。我尝试先显示视频(通过jQuery
somediv.show();
),然后直接调用:
player.api('play')。这会导致非常奇怪的行为,视频不会播放,或者在30秒左右后播放。。。最后,我创建了一个单独的函数(比如OnPlay),它只包含:
player.api('play')。现在行变成:
somediv.show(0,OnPlay)
;这管用!但是为什么呢?我在这里举了一个如何使用VimeoAPI的例子:我仍然在苦读“沮丧的时刻”部分。当我遵循给出的示例时,我得到的只是javascript安全策略冲突。你是如何克服这些问题的?似乎对我不起作用-如果我看Drew Baker的例子或实现上面的答案,我仍然会遇到不安全的javascript错误-播放器可以工作,但错误不会消失。这个解决方案对我不起作用。我找到了另一个解决方法:我正在播放视频,然后在视频准备好后立即暂停。这样,当用户再次尝试播放时,视频播放顺畅。有用的链接清楚地解释了OP的问题:你得到答案了吗@Max?选择1。jQuery选择器中的JS对象,后面有一个[0],如我答案底部的statet…我使用了它,但是,我得到了相同的错误!如果我尝试发出相同的警报,则iframe未定义。另外,使用Player_id和api=1也帮不了你,这对我来说很有用。。。也许把你的密码贴出来。问候语
var iframe = $('#player1')[0];
var player = $f(iframe);