0

自从从 Fancybox 1.3.4 升级到 Fancybox 2.1.4 后,我无法获得正确的href属性来处理我的 youtube 视频。

请看一下我正在尝试修改的这个工作jsfiddle 。

简单地说,我要做的就是&autoplay=1从每个链接的 URL 中删除尾随,并将其添加到href脚本内的属性中。当我尝试这样做时,fancybox 会打开,但 youtube 视频无法播放并报告一般错误。

有人可以帮我将此代码修改为工作版本吗?

这是html:

<a href="http://www.youtube.com/watch?v=opj24KnzrWo&amp;autoplay=1">open youtube video</a>

<br />

<a href="http://www.youtube.com/watch?v=071KqJu7WVo&amp;autoplay=1">open youtube video 2</a>

和javascript:

(function ($) {
  $(document).ready(function(){
    $('a[href*=youtube]').each(function () {
        // convert youtube swf href to embed for iframe
        var thisHref = this.href.replace(new RegExp("watch\\?v=", "i"), 'embed/').replace(new RegExp("&", "i"), '?');
        // bind fancybox to each anchor
        $(this).fancybox({
        "padding": 0,
        "type": 'iframe',
        // add trailing parameters to href (wmode)
        "href" : thisHref+"&amp;wmode=opaque"
        }); // fancybox
    }); // each
  }); // ready
})(jQuery);`

谢谢。

4

1 回答 1

0

对于这种没有任何尾随参数的链接:

<a href="http://www.youtube.com/watch?v=opj24KnzrWo">open youtube video</a>
<a href="http://www.youtube.com/watch?v=071KqJu7WVo">open youtube video 2</a>

使用此代码

(function ($) {
  $(document).ready(function(){
    $('a[href*=youtube]').each(function () {
        // convert youtube swf href to embed for iframe
        var thisHref = this.href.replace(new RegExp("watch\\?v=", "i"), 'embed/');
        // bind fancybox to each anchor
        $(this).fancybox({
            "padding": 0,
            "type": 'iframe',
            // add trailing parameters to href (wmode) AND autoplay    
            "href" : thisHref+"?wmode=opaque&amp;autoplay=1"
        }); // fancybox
    }); // each
  }); // ready
})(jQuery);

您在上一个示例中遇到的问题wmode=opaque是您的第二个参数,因此它需要前面的&amp;

"href" : thisHref+"&amp;wmode=opaque"

但是由于您要从链接中删除所有尾随参数,因此成为wmode=opaque一个参数,因此它需要一个前面的参数?

"href" : thisHref+"?wmode=opaque&amp;autoplay=1"

查看新的JSFIDDLE

于 2013-04-14T07:07:42.070 回答