Javascript Vimeo API未检测到播放事件

Javascript Vimeo API未检测到播放事件,javascript,vimeo,vimeo-api,Javascript,Vimeo,Vimeo Api,我正在尝试使用hte vimeo js api检测播放按钮的点击。这是我的密码: html: 目前,我没有在控制台中记录任何内容。我确实有另一个函数,稍后在DOM中使用Vimeo API,它似乎工作正常: jQuery("body").on("click",".watch-vid-cta",function(){ player.api("play"); }); 我直接从他们的API获得了代码,因此不确定我可能做错了什么: 这里似乎有两

我正在尝试使用hte vimeo js api检测播放按钮的点击。这是我的密码:

html:

目前,我没有在控制台中记录任何内容。我确实有另一个函数,稍后在DOM中使用Vimeo API,它似乎工作正常:

        jQuery("body").on("click",".watch-vid-cta",function(){
              player.api("play");
        });
我直接从他们的API获得了代码,因此不确定我可能做错了什么:


这里似乎有两个问题

第一:vimeo最近发布了新的api 2016,与之前的api不兼容。您提供的代码是两个api的混合,player.apiplay是旧语法,而新的synax是player.play。 在第二个函数工作时,我假设您使用的是名为froogaloops的旧api。vimeo的github页面包含了您可能需要迁移的所有解释,非常简单

第二:在新的api中,似乎混合了事件侦听器播放器。在“播放”中,函数{}在播放播放器时执行一些操作,使用播放方法播放播放器

使用新api,您的代码可能如下所示:

html:

<button type="button" id="playButton">Play</button>
这里player.play方法有一个承诺。函数{},这使您能够在播放播放器后执行某项操作,因此每次调用VimePlay函数时,只需单击本例中的按钮即可执行一次

希望这有帮助

编辑:

关于你的评论,我相信你面临的是第一个问题

如果您的第二个函数(包含player.apiplay)起作用,则可能意味着您使用的是旧api froogaloops,而新api 2016将是player.play

如果是这样,就不能指望player.on'play',函数{console.log'played the video!';};这是新api的语法

您应该仔细检查您使用的api版本,新旧api的链接分别为:

<script src="https://f.vimeocdn.com/js/froogaloop2.min.js"></script>
    //versus
<script src="https://player.vimeo.com/api/player.js"></script>
关于你设置变量的方式和我的不同:

var iframe = document.getElementById('video');
var player = $f(iframe);
    //versus
var iframe = document.querySelector('iframe');
var player = new Vimeo.Player(iframe);
如果您在同一页面上有多个vimeo视频,您可以将一个id赋予vimeo iframes,例如vimeoPlayer1和vimeoPlayer2并写入

<iframe id="vimeoPlayer1" src="https://player.vimeo.com/video/21777784"></iframe>
<iframe id="vimeoPlayer2" src="https://player.vimeo.com/video/21777784"></iframe>

var vPlayer1 = document.getElementById("vimeoPlayer1");
var player1 = new Vimeo.Player(vPlayer1)

var vPlayer2 = document.getElementById("vimeoPlayer2");
var player2 = new Vimeo.Player(vPlayer2)

最后,您可以通过将player.apiplay替换为player.play来升级第二个函数,但如果这里还发生了其他问题,我不能接受jQuery:

这里似乎有两个问题

第一:vimeo最近发布了新的api 2016,与之前的api不兼容。您提供的代码是两个api的混合,player.apiplay是旧语法,而新的synax是player.play。 在第二个函数工作时,我假设您使用的是名为froogaloops的旧api。vimeo的github页面包含了您可能需要迁移的所有解释,非常简单

第二:在新的api中,似乎混合了事件侦听器播放器。在“播放”中,函数{}在播放播放器时执行一些操作,使用播放方法播放播放器

使用新api,您的代码可能如下所示:

html:

<button type="button" id="playButton">Play</button>
这里player.play方法有一个承诺。函数{},这使您能够在播放播放器后执行某项操作,因此每次调用VimePlay函数时,只需单击本例中的按钮即可执行一次

希望这有帮助

编辑:

关于你的评论,我相信你面临的是第一个问题

如果您的第二个函数(包含player.apiplay)起作用,则可能意味着您使用的是旧api froogaloops,而新api 2016将是player.play

如果是这样,就不能指望player.on'play',函数{console.log'played the video!';};这是新api的语法

您应该仔细检查您使用的api版本,新旧api的链接分别为:

<script src="https://f.vimeocdn.com/js/froogaloop2.min.js"></script>
    //versus
<script src="https://player.vimeo.com/api/player.js"></script>
关于你设置变量的方式和我的不同:

var iframe = document.getElementById('video');
var player = $f(iframe);
    //versus
var iframe = document.querySelector('iframe');
var player = new Vimeo.Player(iframe);
如果您在同一页面上有多个vimeo视频,您可以将一个id赋予vimeo iframes,例如vimeoPlayer1和vimeoPlayer2并写入

<iframe id="vimeoPlayer1" src="https://player.vimeo.com/video/21777784"></iframe>
<iframe id="vimeoPlayer2" src="https://player.vimeo.com/video/21777784"></iframe>

var vPlayer1 = document.getElementById("vimeoPlayer1");
var player1 = new Vimeo.Player(vPlayer1)

var vPlayer2 = document.getElementById("vimeoPlayer2");
var player2 = new Vimeo.Player(vPlayer2)

最后,您可以通过将player.apiplay替换为player.play来升级第二个函数,但如果这里发生了其他事情,我无法接受jQuery:

hi,所以您的解决方案并不是我真正想要的。我试图检测用户何时单击播放视频而不是按钮。视频功能可以正常工作fine@BenLiger当前位置我已经更新了我的答案,希望你现在找到你需要的。嗨,所以你的解决方案并不是我想要的。我试图检测用户何时单击播放视频而不是按钮。视频功能可以正常工作fine@BenLiger当前位置我已经更新了我的答案,希望你现在找到你需要的。
var iframe = document.getElementById('video');
var player = $f(iframe);
    //versus
var iframe = document.querySelector('iframe');
var player = new Vimeo.Player(iframe);
<iframe id="vimeoPlayer1" src="https://player.vimeo.com/video/21777784"></iframe>
<iframe id="vimeoPlayer2" src="https://player.vimeo.com/video/21777784"></iframe>

var vPlayer1 = document.getElementById("vimeoPlayer1");
var player1 = new Vimeo.Player(vPlayer1)

var vPlayer2 = document.getElementById("vimeoPlayer2");
var player2 = new Vimeo.Player(vPlayer2)