2012-02-18 164 views
4

音頻加載完成時是否有加載事件觸發?我正在創建一個像這樣的音頻元素。HTML5音頻加載事件?

var myAudio = new Audio("mySound.mp3"); 
myAudio.load(); 

嘗試添加一個eventListener像這樣,但它似乎並沒有觸發。

myAudio.addEventListener("load",soundLoaded,false); 
+0

您是否考慮過[buzz](http://buzz.jaysalvat.com/)並查看其來源? – devdigital 2012-02-18 00:31:26

+0

有趣的圖書館。感謝您的關注。通過查看文檔「canPlayThrough」似乎是我需要的。謝謝 – user781657 2012-02-18 00:46:27

回答

3

音頻標籤的實現很依賴於瀏覽器。它支持我說的不會比視頻標籤,因爲它是在史蒂夫喬布斯對Flash和HTML5聖戰的演講之後炒作的,足夠有趣,它至少得到了Safari的支持。 對於視頻標籤(在事件處理程序中)不適用於音頻標籤的情況,它的真實效果非常好,但狀態仍然正確無誤。 例如:

var a = new Audio(); 
  • a.networkState和a.readyState - 通過檢查這每一秒對 定時器,你可以很容易地獲得有關加載的想法和播放進度。

其他有趣的性質:

  • 追求 - 如果UA目前正在尋求
  • 可搜索 - TIMERANGE對象,該對象可能尋求。
  • 播放 - TimeRange UA已播放。
  • 已暫停 - 如果播放暫停,則爲真。
  • 已結束 - 如果播放結束,則爲真。
  • currentTime - 以秒爲單位返回/設置播放位置。
  • 時間

    使用canPlayType(類型)不要忘記 - 收益 「可能」 和 「也許」

更新:考慮看SoundManager2 - http://www.schillmania.com/projects/soundmanager2/

10

這聽起來像你想「canplaythrough」事件。當瀏覽器認爲它可以在不停止的情況下播放整個音頻文件時觸發。

嘗試:

myAudio.addEventListener('canplaythrough', soundLoaded, false); 

有當音頻文件被加載的是火順序7個事件:

  1. loadstart
  2. durationchange
  3. 等待loadedmetadata
  4. loadeddata
  5. 進度
  6. canplay
  7. canplaythrough

請注意在Internet Explorer版本9在此之前,不支持。