2012-08-03 53 views
10

我寫的PhoneGap /科爾多瓦代碼,包括iframe中的SoundCloud一些部件球員下工作。在Android和iOS下,該代碼在桌面瀏覽器中運行良好。的SoundCloud的iframe停止的iOS

今天的iOS版本停止播放音樂。我也嘗試在移動Safari瀏覽器中運行代碼,並在不同的iPhone和仿真器上運行相同的負面結果。如預期

所有其他plattforms仍在工作。

Xcode的控制檯沒有顯示任何異常,但移動Safari瀏覽器顯示錯誤:

>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 2013-03-05 16:00:47

+0

你爲什麼不用帶phonegap的媒體API? http://docs.phonegap.com/en/2.6.0/cordova_media_media.md.html#Media – 2013-04-21 13:50:22

回答

1

這可能是由於事實的SoundCloud JS玩家將可以從SoundCloud的域名(JSON和實際音頻),其中一些瀏覽器定義爲不安全加載資源。

你可以嘗試使用通配符白名單的所有域按http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html「*」,看看是否可行。如果確實如此,則可以將白名單縮小到您要加載內容的特定域。

我也只注意到你在你的代碼w.soundcloud.com參考是單w ^是否正確?