2012-08-03 17 views
10

Ho scritto codice PhoneGap/Cordova che include alcuni lettori di widget Soundcloud negli iframe. Il codice funzionava bene nei browser desktop, su Android e iOS.Iframe Soundcloud ha smesso di funzionare in iOS

Oggi la versione iOS ha smesso di riprodurre musica. Ho anche provato a eseguire il codice in Safari mobile e su diversi iPhone ed emulatori con lo stesso risultato negativo.

Tutte le altre piattaforme funzionano ancora come previsto.

console Xcode non mostra nulla di insolito, ma Safari Mobile mostra l'errore:

>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. 

io non sono sicuro che questo è stato lì prima, ma è il migliore che ho trovato.

Qui è la parte seconda del codice:

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(); 
    } 

Mi chiedo se questo è davvero un problema cross-domain. L'aiuto è molto apprezzato

Grazie!

Piccolo addendum: Quando si esegue su un iPhone fisica a volte ottengo un:

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

ma che non è sempre il caso e non fa la differenza per la (non) funzionalità.

+0

Si è tentato di autorizzare il dominio in Cordova.plist? È solo una supposizione selvaggia. – bouscher

+0

Perché non usi l'API multimediale con PhoneGap? http://docs.phonegap.com/en/2.6.0/cordova_media_media.md.html#Media –

risposta

1

Questo potrebbe essere dovuto al fatto che il player di soundcloud js caricherà risorse dal dominio di soundcloud (JSON e l'audio effettivo) che alcuni browser definiscono insicuro.

È possibile provare a inserire nella whitelist tutti i domini come da http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html utilizzando il carattere jolly '*' per vedere se funziona. In tal caso, puoi limitare la whitelist ai domini specifici dai quali stai caricando il contenuto.

Ho anche notato che hai un riferimento nel tuo codice per w.soundcloud.com il single w è corretto?

Problemi correlati