Javascript 绑定()到动态嵌入的SounClud小部件

Javascript 绑定()到动态嵌入的SounClud小部件,javascript,api,widget,soundcloud,oembed,Javascript,Api,Widget,Soundcloud,Oembed,我正在使用以下代码嵌入soundcloud小部件: SC.oEmbed(soundcloud_url, {color: "3C9FCE"}, document.getElementById('container_id')); 如何将SC.Widget.Events.Ready绑定到它?我看不到任何方法来设置嵌入iframe的id或类,以便选择它。我也不知道它是什么时候加载的,这样我就可以绑定它了,比如下面的功能失调代码: var frame = document.getElementById

我正在使用以下代码嵌入soundcloud小部件:

SC.oEmbed(soundcloud_url, {color: "3C9FCE"},  document.getElementById('container_id'));
如何将SC.Widget.Events.Ready绑定到它?我看不到任何方法来设置嵌入iframe的id或类,以便选择它。我也不知道它是什么时候加载的,这样我就可以绑定它了,比如下面的功能失调代码:

var frame = document.getElementById('container_id').getElementsByTag("iframe")[0];
frame.bind(SC.Widget.Events.Ready, listnerFucnt());

谢谢

如果您使用SoundCloud JavaScript SDK的原因是 要
SC.oembed
在只有SoundCloud permalink时获取嵌入HTML, 那你可能不应该。您可以与
/resolve
或者改为
/oembed
端点

区别在于
/oembed
端点不需要
客户端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');
    });
  });
此代码已激活并已发表评论——

选择2 您可以做的另一件事是使用
/resolve
端点,但您必须指定
客户机id
,以便与之交互,另外您还需要自己构建小部件iframe HTML(这还不算太糟糕):

var SOUNDCLOUD\u URL='1〕http://soundcloud.com/georgconrad/shostakovich2',
客户ID='您的客户ID',
模板=“”;
$.getJSON(
'http://api.soundcloud.com/resolve.json?url=“+SOUNDCLOUD_URL+
“&客户端id=”+客户端id
).完成(功能(声音数据){
//我正在使用Crockford中的String.prototype.replacement
//(如果您遵循示例代码链接,您将了解我的意思)
$('body').html(TEMPLATE.replacement({
url:soundData.uri,
选项:“&color=3C9FCE”
}));
widget=SC.widget($('body').find('iframe')[0]);
widget.bind('ready',function(){
警报(“小部件就绪”);
});
});
还有例子


请注意,您可以在JSBin上禁用HTML输出窗格,以便更容易阅读示例JavaScript代码。

如果您使用SoundCloud JavaScript SDK的原因是为了能够 要
SC.oembed
在只有SoundCloud permalink时获取嵌入HTML, 那你可能不应该。您可以与
/resolve
或者改为
/oembed
端点

区别在于
/oembed
端点不需要
客户端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');
    });
  });
此代码已激活并已发表评论——

选择2 您可以做的另一件事是使用
/resolve
端点,但您必须指定
客户机id
,以便与之交互,另外您还需要自己构建小部件iframe HTML(这还不算太糟糕):

var SOUNDCLOUD\u URL='1〕http://soundcloud.com/georgconrad/shostakovich2',
客户ID='您的客户ID',
模板=“”;
$.getJSON(
'http://api.soundcloud.com/resolve.json?url=“+SOUNDCLOUD_URL+
“&客户端id=”+客户端id
).完成(功能(声音数据){
//我正在使用Crockford中的String.prototype.replacement
//(如果您遵循示例代码链接,您将了解我的意思)
$('body').html(TEMPLATE.replacement({
url:soundData.uri,
选项:“&color=3C9FCE”
}));
widget=SC.widget($('body').find('iframe')[0]);
widget.bind('ready',function(){
警报(“小部件就绪”);
});
});
还有例子


请注意,您可以在JSBin上禁用HTML输出窗格,以便更容易阅读示例JavaScript代码。

完美!你提供的第二个选择正是我想要的。太好了!你提供的第二个选择正是我想要的。