Froogaloop Vimeo API--Can't在就绪事件之外调用API方法
Froogaloop Vimeo API -- Can't call API methods outside of Ready Event
我已经搜索了SO和Vimeo中的文档,似乎不知道如何在Vimeo的Ready Event之外调用API方法。我已经创建了我的Vimeo播放器,并将其嵌入到teacher.js:中
$(".video-player").prepend('<iframe id="player" src="//player.vimeo.com/video/'+video_id+'?api=1&player_id=player&badge=0&title=0&byline=0&portrait=0" width="100%" height="100%" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>');
player = $('iframe#player')[0];
vimeoSetup(player);
然后用另一个脚本调用vimeoSetup:
function vimeoSetup (player) {
$f(player).addEvent('ready', ready);
function addEvent(element, eventName, callback) {
if (element.addEventListener) {
element.addEventListener(eventName, callback, false);
}
else {
element.attachEvent('on'+eventName, callback);
}
}
function ready(player_id) {
// Keep a reference to Froogaloop for this player
container = document.getElementById(player_id).parentNode.parentNode;
froogaloop = $f(player_id);
var buttons = container.querySelector('div#video-player-controls-holder-teacher div'),
playBtn = document.querySelector('#play-pause');
//play-pause -- I wanted to have a single play-pause button, which is working fine
addEvent(playBtn, 'click', function() {
froogaloop.api('paused', function(paused) {
if(paused) {
froogaloop.api('play');
} else {
froogaloop.api('pause');
}
});
});
...
现在,如果我想说调用$f(播放器).api("暂停");在teacher.js中,我收到以下错误:无法将消息发布到http://player.vimeo.com.收件人的来源为mydomain。这似乎是一个很简单的问题——我不确定它是否涉及到我目前无法使用的"this",或者我是否错误地获取了Vimeo播放器嵌入——我在实验中确实得到了很多"没有这个对象的方法.api"。
最终目标是我可以创建一个vimeo播放器,提供控件(这两个都很好),然后使用API调用提供给主干的方法,包括暂停、播放和时间。
除了"点击"和用户生成的事件之外,还有其他事件可以使用吗?就像一个事件说调用了另一个函数?看起来迂回。。。我的主干视图如下:
pause: function () {
this.player.pauseVideo(); //this is for a YouTube API which works great
//I want to be able to similarly call something like froogaloop.api('pause');
},
非常感谢——StackOverflow教会了我很多。
因此,如果'ready'
事件正在工作,那么一切都必须正确设置。但这里有一个可能的问题
In:
player = $('iframe#player')[0];
vimeoSetup(player);
您通过id 'player'
获得Object
,然后在vimeoSetup(player);
中将Object
传递到正在工作的$f(player)
中
然而,在ready
函数的代码后面,您传递给$f(player_id)
的只是一个id
,而不是Object
,因此api调用不起作用。
您只需要通过player_id
再次获得Object
,并将其传递到$f()
中,或者将player = $('iframe#player')[0];
保存为全局var
,然后调用其上的所有API方法(尽管这不是一个好的选择,如果您想制作一些普通的生成玩家,每个玩家都有自己的控件,或者如果您只是其中之一,害怕全局变量)
- d3-js快速事件调用问题
- 使用按钮OnClick事件调用Javascript函数
- 了解在JavaScript中(在IE中)对某个事件调用了什么函数
- 如何使用onclick事件调用AngularJS控制器
- 无法从onclick事件调用JS函数
- 当多个 JS 事件调用同一个函数时,如何处理它们
- 为什么我从 JSLint 获得从事件调用的函数的“超出范围”
- 你能用onblur事件调用一个外部Javascript吗
- jquery mobile,从事件调用转换
- 如何使用C#为特定按钮事件调用JavaScript方法
- 如何在函数内部定义一个变量以供事件调用
- 如何从onClick事件调用对象函数
- 使用promise.then时,是否可以保留在单击事件调用堆栈中
- 如何断言间谍是使用jasmine通过点击事件调用的
- 使用AngularJS对超快速keyup和keydown事件调用函数
- 为同一标记中的两个不同事件调用两个javascript方法
- 事件调用方似乎无法正常工作
- 事件调用和范围问题
- 如何在 ng-repeat 中将变量值附加到事件调用
- j查询点击事件;调用特定函数(如果可用)