Javascript 为什么赢了';直到我在手机上点击播放三次,SoundCloud API才会响应吗?

Javascript 为什么赢了';直到我在手机上点击播放三次,SoundCloud API才会响应吗?,javascript,android,jquery,mobile,soundcloud,Javascript,Android,Jquery,Mobile,Soundcloud,我用SoundCloud API创建了自己的音乐播放器,在桌面上一切都很好。然而,出于某种原因,在音乐播放器真正启动之前,手机上的播放按钮至少需要点击三下。知道我做错了什么吗 下面是我的jQuery代码。我的音乐播放器是一个JS对象,这是播放方法: //<-- PLAY TRACK --> this.playTrack = function(track, number) { var that = this; SC.stream("/tracks/" + track

我用SoundCloud API创建了自己的音乐播放器,在桌面上一切都很好。然而,出于某种原因,在音乐播放器真正启动之前,手机上的播放按钮至少需要点击三下。知道我做错了什么吗

下面是我的jQuery代码。我的音乐播放器是一个JS对象,这是播放方法:

//<-- PLAY TRACK -->
this.playTrack = function(track, number) {

    var that = this;

    SC.stream("/tracks/" + track, {onfinish: function() { 
        that.onFinish(number);
    }}, 

    function (sound) {
        that.stream = sound;
        that.currentTrack = track;

        var trackName = $(that.track_links[number]).html();
        trackName = trackName.replace(/\d.\s/, "");
        that.player.find(".current-track").css("display", "block");
        that.player.find(".current-track").children("p").html(trackName);

        sound.play({
            whileplaying: function () {
                that.player.find(".progress").css('width', ((sound.position / sound.duration) * 100) + '%');
                that.player.find(".playtime").html(that.minutesAndSeconds(sound.position));
            },
        });

        that.updateProgress(sound);

    that.playing = true;
    }); 
}
//
this.playTrack=函数(曲目,编号){
var=这个;
SC.stream(“/tracks/”+track,{onfinish:function(){
onFinish(数字);
}}, 
功能(声音){
那。流=声音;
当前轨迹=轨迹;
var trackName=$(that.track_links[number]).html();
trackName=trackName.replace(/\d.\s/,“”);
.player.find(“.current track”).css(“display”、“block”);
.player.find(“.current track”).children(“p”).html(trackName);
音效({
whileplaying:函数(){
that.player.find(“.progress”).css('width',((sound.position/sound.duration)*100)+'%');
that.player.find(“.playtime”).html(that.minutesAndSeconds(sound.position));
},
});
更新进度(声音);
那是真的;
}); 
}

我也遇到了这个问题-桌面上的一切都很好,但是,播放器在开始播放之前尝试了移动设备。我在控制台中注意到:

Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture.

这出戏实际上是由点击开始的,所以我不知道为什么Soundmanager会这样阻止它。我的解决方案是,当用户点击一个元素时,启动初始的“播放”事件——在我的例子中,就是将玩家带入视图的元素。我仍然会收到错误-但是,下一次单击会起作用。

有人遇到过同样的问题吗?这很奇怪…你的意思是当用户点击让玩家进入视野时触发播放功能(或方法)吗?如果是,我有一个问题,因为我的SC播放器在页面加载时已经在视图中。