1

プレイリストを再生するか、 trackid ではなくパーマリンクでトラックを追跡する のフォローアップとして: 提供されたソリューションは、Mac の Safari を除いてどこでも問題なく動作するようです。

Mac の Safari では、XMLHttpRequest はhttp://api.soundcloud.com/playlists/ .json?client_id=... を読み込めません。Origin は Access-Control-Allow-Origin によって許可されていません。

JavaScript を別のサイト (Confluence) に埋め込んでいるため、これはやや複雑です。スタンドアロンのフィドルは Safari で問題なく動作しました。

From XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin問題は jsonp に関係していると思われますが、これは私の専門外です。

アドバイスをいただければ幸いです。

ありがとう、マーティン。

4

1 に答える 1

2

JSONP アプローチを試すことができます。XMLHttpRequest の代わりに JSONP を使用した更新されたフィドルを次に示します。主な違いは、getSoundCloudId()メソッドとグローバルjsonpResponse()メソッドの追加です。

function getSoundCloudId(permalink) {
  var jsonp   = document.createElement('script');
  var script  = document.getElementsByTagName('script')[0];
  jsonp.type  = 'text/javascript';
  jsonp.async = true;
  jsonp.src   = 'http://api.soundcloud.com/resolve.json?client_id='+CLIENT_ID 
              + '&url='+permalink+'&callback=jsonpResponse';
  script.parentNode.insertBefore(jsonp, script);
  return false;
}
于 2013-10-18T19:14:47.803 に答える