3

我想知道是否有人可以帮助我在 Soundcloud 的 Fancybox 2 媒体助手中制作另一个案例。当fancybox被触发时,我需要它来加载soundcloud iframe - 否则使用大量嵌入时,事情会变得非常慢。

我对正则表达式不是很熟悉 - 因此我的询问。

谷歌部分如下所示:

google_maps : {
    matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i,
    type : 'iframe',
    url  : function( rez ) {
        return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed');
    }
}

现在,如果我们采用 soundcloud 的标准 iframe 代码:

<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F91535490"></iframe>

我相信我们会从 iframe 中获取 url,因为直接链接不包含轨道的 id - 只有它的字符串表示。

到目前为止我所得到的(努力;) - 以下是行不通的:

soundcloud : {
        matcher : /w\.soundcloud\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|url\?)(.*)/i,
        type : 'iframe',
        url  : function( rez ) {
            return '//w.soundcloud.com/player/?url=$1';
        }
}

有人可以在这里指出我正确的方向吗?

4

1 回答 1

2

好的 - 对于那些也想知道的人 - 我已经设法让它与以下内容一起工作:

 soundcloud : {
        matcher : /w\.soundcloud\.com\/player\/(.*)\/?(.*)/,
        type : 'iframe',
        url  : function( rez, params, obj ) {
            obj.width = '600px';
            obj.height = '166px';
            return '//w.soundcloud.com/player/' + rez[1];
        }
}
于 2013-06-26T09:52:17.957 回答