2011-03-30 137 views
2

,如果我停止音頻播放與.pause()方法的問題然後設置.currentTime = 0,最後調用.play()方法再次我聽到一個從無到有......有時候,這聽起來像回放從1秒開始,但應該從0開始!我的代碼:停止移動HTML5音頻和重新啓動播放

HTML:

<audio id="sound" preload="auto" autobuffer> 
    <source src="a.mp3" /> 
</audio> 

JS:

var sound = $('#sound')[0]; 

function playSound(){ 
    sound.pause(); 
    sound.currentTime = 0; 
    sound.play(); 
} 

如果我調用該函數的事件驅動,有時上面解釋的錯誤occures。

任何想法?謝謝。

回答

2

代碼看起來不錯。你有沒有嘗試過不同的瀏覽器? HTML5尚未最終確定,瀏覽器供應商正在致力於實施。也許是一個錯誤?

+1

在FF4歌劇Safari和Chrome :) 有tryed我已經注意到了,我有同樣的錯誤@ jPlayer,所以在我眼中,它是一個bug atm。但即時消息準備好相信:) – ayk 2011-04-13 12:29:44

+0

對於Chrome,請嘗試使用最新版本(2011年4月21日前的12.0.742.0)開發者版本。如果您仍然看到問題,請在http://crbug.com上提出錯誤 – 2011-04-21 21:38:23

0

嘗試......你是不是實際調用代碼中的事件。你打電話時,一個全新的世界開闢了給你的,你可以與對象做什麼條件...

當用戶點擊音頻元素是什麼,我這裏做的是啓動計時器,並開始播放。然後,每隔1秒,我檢查一次是否已經過了45秒。如果有,這是我展示的音頻的試用版本,並將currentTime重置爲0,然後暫停視頻,以便它不會循環。然後我清除間隔。

之間的區別是什麼,你在做什麼我做的是所有在功能參數小「E」。如果您確實在腳本的某處放置了console.log(e);,然後打開Firebug或任何其他基於Web的控制檯,則可以單擊返回的值並查看可從事件對象訪問的所有信息。從那裏,你幾乎可以讓音頻播放器讓你喝杯咖啡......好吧,也許不是那樣,但你可以讓它屈服於你的意志。

$('audio').click(function(e) { 
    window.setInterval(function(){ 
     if(e.currentTarget['currentTime'] > 45){ 
     $(e.currentTarget['currentTime'] = 0); 
     $(e.currentTarget.pause()); 
     clearInterval(); 
     } 
    }, 1000); 
}); 

=========================================== =============================