2013-04-26 64 views
0

我正在使用jQuery,并且我注意到,当我点击链接导致音频播放时,它在iPad上正常工作。据我了解,音频只允许播放,因为用户明确点击了某些东西。但是,如果我点击某个链接以使某些内容淡入,然后回拨播放音频,则它不再适用于iPad,除非您再次点击该链接(在该元素已经播放之后淡入)。这里有一个例子:HTML5音频:检测何时需要实际点击才能播放音频

http://jsfiddle.net/3sg2v/

注意,在桌面浏览器,你只需要点击链接一次的音频播放。

我发现iPad并不是唯一以这种方式表现的设备。我在运行Android 4.1.2的摩托罗拉Xoom上试用了上述示例,并在股票浏览器和Chrome 18.0.1025469中获得了相同的行为。然而,它适用于在我的股票浏览器和Firefox 20.0.1上运行Android 2.3.4的我的摩托罗拉Droid 2(音频播放时只需要点击一下链接)。

我的问题是什么是最优雅的方式来检测此行为?

+0

为什么不简单地在'fadeIn'回调之外调用'$('#audio_test')[0] .play();'' – idbehold 2013-04-26 18:19:53

+0

@idbehold这只是一个简单的例子,但如果我在播放音频之前想做几件不同的事情,而且我不知道这些事情需要多长时间,那么我该怎么做? – Nick 2013-04-26 18:24:14

+0

hm,不支持jq回调的平板电脑...你有没有尝试过使用纯javascript? – 2013-04-26 18:29:45

回答

0

这似乎是工作(jsFiddle demo):

test_audio_played = false; 

$('<audio>').on('play', function() { 
    test_audio_played = true; 
})[0].play(); 

setTimeout(function() { 
    alert(test_audio_played); 
}, 1); 

桌面浏览器和我的摩托罗拉Droid 2运行Android 2.3.4所有警报 “真”,如预期以及iPad和摩托罗拉XOOM运行Android 4.1 .2按预期提醒“错误”。