2
我有一個音頻標記,僅當Ajax請求返回數據時才播放。html <audio>與以前的用戶交互在iPad上播放標記
我知道iPad只能通過用戶交互播放視頻和音頻。
但是我的Ajax請求是在用戶點擊一個按鈕時產生的。所以,我有一個用戶交互。
所以,我的問題是,如果有一種方法可以讓我的用戶交互「驗證」在用戶單擊幾秒後播放聲音?
我有一個音頻標記,僅當Ajax請求返回數據時才播放。html <audio>與以前的用戶交互在iPad上播放標記
我知道iPad只能通過用戶交互播放視頻和音頻。
但是我的Ajax請求是在用戶點擊一個按鈕時產生的。所以,我有一個用戶交互。
所以,我的問題是,如果有一種方法可以讓我的用戶交互「驗證」在用戶單擊幾秒後播放聲音?
我不確定這是最好的解決方案,但它工作...當AJAX開始時,我開始一個循環等待它完成。當它發生時,循環會發出聲音。我注意到它一直不工作,我認爲如果音頻還沒有加載,它會崩潰(我沒有得到任何錯誤,但是如果我在頁面加載後等待幾秒鐘,它似乎沒關係)
編輯:雖然這適用於我(iPad2 [iOS 5.1.1]),它不適用於OP(iPad1 [iOS4])。其他人可以分享他們的結果嗎? link(並在加載後等待幾秒鐘)
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>iPad Audio</title>
</head>
<body>
<audio id="noise"><source src="beep.mp3" type="audio/mp3" /></audio>
<button onclick="begin_test();">Go</button>
</body>
<script>
var snd=document.getElementsByTagName("audio")[0];
snd.load();
var shouldPlay=false;
function begin_test(){
shouldPlay=false;
play();
var xmlhttp=((window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"));
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
shouldPlay=true;
}
}
xmlhttp.open("GET","levels.txt",true);
xmlhttp.send();
}
function play(){
if (shouldPlay){
snd.play();
shouldPlay=false;
}
else{
setTimeout(play,10);
}
}
</script>
</html>
你試過了嗎? – 2012-08-17 01:58:39
嘗試過什麼,機器人? – 2012-08-17 02:00:28
用ajax調用測試頁,最後播放聲音...在ipad上試試它,看看它是否工作...我只是無法從你的文章中知道如果你知道它不工作,或者你只是想知道 – 2012-08-17 02:01:58