你如何确保Vimeo视频存在?

San*_*shi 6 javascript jquery vimeo vimeo-api

所以,我试图只在它存在的情况下显示Vimeo视频.我正在使用新的JavaScript API.

根据他们的文档,error当视频在加载时出现错误时,应触发事件.我相信,添加错误的Vimeo视频网址也应该触发该error事件.

这就是我为使error事件发挥作用所做的事情:

<iframe id="vimeo-player1" src="https://player.vimeo.com/video/13333693532?autoplay=0&amp;background=1" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
Run Code Online (Sandbox Code Playgroud)

方法1

player = new Vimeo.Player($('#vimeo-player1'));

player.on('error', function() {
    console.log('Error in loading video');
});
Run Code Online (Sandbox Code Playgroud)

方法2

player = new Vimeo.Player($('#vimeo-player1'));

player.loadVideo().then(function(id) {
    console.log('loaded');
}).catch(function(error) {
    console.error(error);
});
Run Code Online (Sandbox Code Playgroud)

他们都没有工作.它从未执行过错误块.

一些附加信息(帮助您赢得Bounty):

  • 需要客户端解决方案(我无权访问门户的服务器端)
  • 视频由第三方用户托管

Eti*_*tin 2

我发现最简单的方法是使用 oEmbed 开放标准调用 Vimeo API:

function checkIfVideoExists(url, callback){
    $.ajax({
        type:'GET',
        url: 'https://vimeo.com/api/oembed.json?url=' + encodeURIComponent(url),
        dataType: 'json',
        complete: function(xhr) {
            callback(xhr.status);
        } 
    });
}

checkIfVideoExists("https://vimeo.com/217775903", function(status){
    console.log(status); // 200 - OK
});

checkIfVideoExists("https://vimeo.com/234242343", function(status){
    console.log(status); // 404 - Not found
});
Run Code Online (Sandbox Code Playgroud)

jsFiddle 上的实例