2013-04-26 89 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按預期提醒「錯誤」。