jquery - Soundcloud iframe 在 iOS 下停止工作

标签 jquery ios cordova soundcloud

我编写了 phoneGap/Cordova 代码,其中包括 iframe 中的一些 soundcloud 小部件播放器。代码在 android 和 iOS 下的桌面浏览器中运行良好。

今天 iOS 版本停止播放音乐。我还尝试在移动 safari 和不同的 iPhone 和模拟器上运行代码,但结果相同。

所有其他平台仍在按预期工作。

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

但情况并非总是如此,它不会对(非)功能产生影响。

最佳答案

这可能是因为 soundcloud js 播放器将从 soundcloud 的域(JSON 和实际音频)加载资源,某些浏览器将其定义为不安全。

您可以尝试根据 http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html 将所有域列入白名单通过使用通配符“*”来查看是否有效。如果是这样,那么您可以将白名单缩小到您从中加载内容的特定域。

我刚刚还注意到您的代码中有对 w.soundcloud.com 的引用,单个 w 是否正确?

关于jquery - Soundcloud iframe 在 iOS 下停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11800437/

相关文章:

javascript - 如何在 Jquery 中使用动态元素

javascript - 使用 jquery 进行 ajax 调用

iOS - 仅适用于 iOS 6 及更高版本的 Info.plist 条目?

jquery - Intel xdk 不允许我进行 Ajax 调用

android - 在没有当前上下文的情况下调用 OpenGL ES API(每个线程记录一次)Cordova

javascript - 单击按钮时如何删除 iframe

javascript - FullCalendar 和事件 : function

ios - AVAudioPlayer多种声音嘈杂

ios - Flutter:让 Podfile 工作

javascript - 按住按钮可在 Android PhoneGap 中执行操作