Soundcloud iframe перестал работать под iOS

Я написал код phoneGap/Cordova, который включает в себя некоторые проигрыватели виджетов soundcloud в iframe. Код нормально работал в настольных браузерах, под Android и iOS.

Сегодня 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.)

Но это не всегда так, и это не влияет на (не)функциональность.


person alx60531    schedule 03.08.2012    source источник
comment
Пробовали внести домен в белый список Cordova.plist? Это просто дикая догадка.   -  person bouscher    schedule 05.03.2013
comment
Почему бы вам не использовать медиа-API с телефонной связью? docs.phonegap.com/en/2.6.0/cordova_media_media. md.html#Медиа   -  person Romain Braun    schedule 21.04.2013


Ответы (1)


Это может быть связано с тем, что проигрыватель soundcloud js будет загружать ресурсы из домена soundcloud (JSON и фактическое аудио), которые некоторые браузеры определяют как небезопасные.

Вы можете попробовать добавить в белый список все домены в соответствии с http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html, используя подстановочный знак '*', чтобы проверить, работает ли это. Если это так, вы можете сузить белый список до конкретных доменов, из которых вы загружаете контент.

Я также только что заметил, что в вашем коде есть ссылка на w.soundcloud.com.

person menab0t    schedule 24.04.2013