SoundCloud JavaScript SDK を使用している理由が、SC.oembed
SoundCloud のパーマリンクしかないときに埋め込み HTML を取得できるようにするためである場合は、おそらくそうすべきではありません。/resolve
代わりに、または/oembed
エンドポイントと対話できます。
違いは、リクエストで/oembed
エンドポイントを指定する必要がないことですclient_id
。まずこのアプローチから始めましょう。
オプション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
JavaScript コードの例を読みやすくするために、JSBin のHTMLまたは出力ペインを無効にできることに注意してください。