如果您使用 SoundCloud JavaScript SDK 的原因是能够SC.oembed
在只有 SoundCloud 永久链接的情况下嵌入 HTML,那么您可能不应该这样做。/resolve
您可以改为与其中一个或/oembed
端点交互。
不同的是,/oembed
endpoint 不需要client_id
在 request 中指定,所以我们先从这种方法开始。
选项1
我将使用 jQuery,但想法应该很清楚:
var SOUNDCLOUD_URL = 'http://soundcloud.com/georgconrad/shostakovich2',
WIDGET_OPTIONS = '&color=3C9FCE&liking=false';
jQuery
.getJSON(
'http://soundcloud.com/oembed.json?url=' + SOUNDCLOUD_URL + WIDGET_OPTIONS
)
.done( function ( data ) {
var widget;
$('body').html( data.html );
widget = SC.Widget($('body').find('iframe')[0]);
widget.bind('ready', function () {
alert('widget ready');
});
});
此代码实时并评论 - http://jsbin.com/ilesum/2/edit
选项 2
您可以做的另一件事是使用/resolve
端点,但您必须指定client_id
才能与之交互,而且您需要自己构建 Widget iframe HTML(虽然这还不错):
var SOUNDCLOUD_URL = 'http://soundcloud.com/georgconrad/shostakovich2',
CLIENT_ID = 'YOUR_CLIENT_ID',
TEMPLATE = '<iframe width="100%" height="166" scrolling="no" ' +
'frameborder="no" src="http://w.soundcloud.com/player/?url={url}{options}" '+
'class="sc-widget"></iframe>';
$.getJSON(
'http://api.soundcloud.com/resolve.json?url=' + SOUNDCLOUD_URL +
'&client_id=' + CLIENT_ID
).done(function ( soundData ) {
// I am using String.prototype.supplant from Crockford
// (if you follow example code link you'll see what I mean)
$('body').html(TEMPLATE.supplant({
url: soundData.uri,
options: '&color=3C9FCE'
}));
widget = SC.Widget($('body').find('iframe')[0]);
widget.bind('ready', function () {
alert('widget ready');
});
});
和例子一样http://jsbin.com/oqebuk/2/edit
请注意,您可以禁用JSBin 上的HTML或输出窗格,以便更容易阅读示例 JavaScript 代码。