2012-08-03 21 views
10

iframeにサウンドクラウドウィジェットのプレーヤーを含むphoneGap/Cordovaコードを記述しました。このコードは、アンドロイドとiOSの下で、デスクトップブラウザで正常に動作していました。iOSでSoundcloud iframeの動作が停止しました

今日、iOS版の音楽の再生が停止しました。私はまた、モバイルサファリで、同じマイナスの結果で異なるiPhoneやエミュレータでコードを実行しようとしました。

他のすべてのプラットフォームは、意図したとおりに動作しています。

Xcodeのコンソールには何も異常が表示されませんが、モバイルサファリはエラーを示しています

>Unsafe JavaScript attempt to access frame with URL http://domainname/ from frame with URL http://w.soundcloud.com/player/?url=http://api.soundcloud.com/tracks/12345. Domains, >protocolls and ports must match. 

私は、これは前にもあったが、それは私が見つけることができる最善であるか分かりません。

SC.get('/resolve', { 
     url : 'http://soundcloud.com/' + trackURL[c] 
    }, function(track) { 
      SC.get('/tracks/' + track.id + '/comments', function(comments) { 
       if (c == 0) { 
       $("#track1").append("<div style='height:110px; white-space:normal;overflow:visible;'> <img src='" + track.artwork_url + "' class='trackTitle' > <img src='img/play.png' id='play1' class='mainPlay'/> <h3 style='margin-top:75px;margin-left:120px; font-size:10px; position:absolute; line-height:10px;'> " + track.title + "</h3></div>"); 
       $("#track1").css("background", "none"); 
       $('#sc-widget1').attr("src", "http://w.soundcloud.com/player/?url=http://api.soundcloud.com/tracks/" + trackID[0]); 
      } 

    var widgetIframe = document.getElementById('sc-widget1'); 
    widget1 = SC.Widget(widgetIframe); 

    $("#play1").on('click', function() { 
     widget1.toggle(); 
    } 

これは本当にクロスドメインの問題であれば、私は疑問に思う:ここ

は、コードの応じて一部です。ヘルプは本当に感謝しています。

ありがとうございます!

小補遺:物理iphone上で動作しているとき、私は時々得る:

Failed to load webpage with error: The operation couldn’t be completed. (NSURLErrorDomain error -999.) 

をしかし、それは必ずしもそうではありません、それは(非)の機能に違いはありません。

+0

Cordova.plistでドメインをホワイトリストに登録しようとしましたか?それは単なる野生の推測です。 – bouscher

+0

phonegapでmedia APIを使用してみませんか? http://docs.phonegap.com/ja/2.6.0/cordova_media_media.md.html#Media –

答えて

1

これは、サウンドクラウドのjsプレーヤーがサウンドクラウドのドメイン(JSONと実際のオーディオ)から、一部のブラウザでは安全でないと定義しているリソースを読み込むためです。

http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.htmlのようにすべてのドメインをワイルドカード文字「*」を使用してホワイトリストに登録してみてください。そうであれば、ホワイトリストをコンテンツをロードしている特定のドメインに絞り込むことができます。

また、w.soundcloud.comへのコードに参照があることに気がつきました。

関連する問題