jquery 重新格式化漂亮的照片Vimeo播放器嵌入表达式

nkcskrwz  于 2023-03-01  发布在  jQuery
关注(0)|答案(1)|浏览(360)

我有麻烦与prettyphoto输出视频嵌入链接在错误的顺序为未列出的视频,导致视频播放器声明,该视频不存在。
背景:视频链接将是这样的:

https://vimeo.com/12345/abcde

输出变为:

https://player.vimeo.com/video/12345?title=0&byline=0&portrait=0&autoplay=1&allowFullScreen=1;h=abcde;

正如你所看到的,未列出的视频哈希值被附加到链接的末尾。它应该看起来像这样:

https://player.vimeo.com/video/12345?h=abcde&title=0&byline=0&portrait=0&autoplay=1&allowFullScreen=1;

注意哈希"h = abcde"在视频ID "12345"之后。
Prettyphoto使用下面的代码输出视频播放器:

case 'vimeo':
    pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport
                
    movie_id = pp_images[set_position];
    var regExp = /http(s?):\/\/(www\.)?vimeo.com\/(\d+)/;
    var match = movie_id.match(regExp);
                    
    movie = 'http://player.vimeo.com/video/'+ match[3] +'?title=0&byline=0&portrait=0';
    if(settings.autoplay) movie += "&autoplay=1;";
            
    vimeo_width = pp_dimensions['width'] + '/embed/?moog_width='+ pp_dimensions['width'];
            
    toInject = settings.iframe_markup.replace(/{width}/g,vimeo_width).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,movie);
break;

如何编辑这个匹配表达式,使播放器链接正确输出?我觉得这应该很容易,但我想不通。

zwghvu4y

zwghvu4y1#

以防对任何人有用。我已经找到了部分解决办法。
我更新了Vimeo部分的prettyphoto代码为:

case 'vimeo':
    pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport
                
    movie_id = pp_images[set_position];
    var regExp = /^https?:\/\/(?:www\.)?vimeo\.com\/(\d+)\/(\w+)/;
    var match = movie_id.match(regExp);
    var videoId = match[1];
    var videoHash = match[2];
                    
    movie = 'https://player.vimeo.com/video/'+ videoId +'?h=' + videoHash +'&title=0&byline=0&portrait=0';
    if(settings.autoplay) movie += "&autoplay=1&";
    else movie += "&autoplay=0&";

    vimeo_width = pp_dimensions['width'] + '/embed/?moog_width='+ pp_dimensions['width'];
            
    toInject = settings.iframe_markup.replace(/{width}/g,vimeo_width).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,movie);
break;

我唯一不能回避的是,不知何故,它仍然把哈希字符串附加到输出URL的末尾。我不知道如何阻止这种情况发生,所以我只是在autoplay参数后面添加了“&”,Vimeo似乎允许这样做。
现在还在工作,但有点古怪。

相关问题