2012-08-31 120 views
4

我無法讓HTML5音頻在我的網站上循環播放:http://oclock.webs.com。 (這是一個鬧鐘,當鬧鐘響起時,應該一遍又一遍地循環播放1秒的鬧鐘聲,直到您在警告框中單擊確定)。HTML5音頻循環出現問題


簡單地在音頻標籤中包含「loop」沒有做任何事情。

我發現在計算器上一個有用的後導致我到這個網站:http://forestmist.org/2010/04/html5-audio-loops/

我知道方法1和,因爲他們沒有在Firefox,並且是前途未卜在Chrome 2不會爲我工作,所以方法3應該已經工作,不幸的是它沒有。當我在該網站的頁面上時,方法3工作,但當代碼包含在我自己的頁面中時,方法3不起作用,所以我認爲可能存在一些衝突的代碼。


我的網頁的

相關部分:

<audio id="audio1" preload> 
    <source src="media/alarm.ogg" type="audio/ogg" /> 
    <source src="media/alarm.mp3" type="audio/mpeg" /> 
</audio> 

<audio id="audio2" preload> 
    <source src="media/alarm.ogg" type="audio/ogg" /> 
    <source src="media/alarm.mp3" type="audio/mpeg" /> 
</audio> 

相關頁面的JavaScript:

if(timer==true && hours==hv && mins==mv && secs==sv){ 
    document.getElementById("audio1").play(); 
    alert("o'clock: Alarm ringing!"); 
    document.getElementById("alarm").value="Set Alarm"; 

    document.getElementById('audio1').addEventListener('ended', function(){ 
     this.currentTime = 0; 
     this.pause(); 
     document.getElementById('audio2').play(); 
    }, false); 

    document.getElementById('audio2').addEventListener('ended', function(){ 
     this.currentTime = 0; 
     this.pause(); 
     document.getElementById('audio1').play(); 
    }, false); 
} 

else{ 
    document.getElementById("audio1").pause(); 
    document.getElementById("audio2").pause(); 
    document.getElementById("audio1").currentTime = 0; 
    document.getElementById("audio2").currentTime = 0; 
} 

意向:在計算機的時間匹配的選定時間在頁面上時,音頻報警將重複(循環),直到用戶在彈出的警告框中單擊確定。

問題:目前它只播放音頻一次,它不會循環播放。我在哪裏搞砸了?

+0

它也可以幫助我們,如果你可以對準你的大括號。 – KyelJmD

+0

謝謝@KyelJmD,補充了一些意向。 – zants

回答

0

「結束事件」或「循環」屬性在某些瀏覽器中不起作用。 所以我用window.setInterval()來循環播放音頻。

對於此方法,您應該瞭解高級音頻文件的播放時間。

function playAudioWithLoop (/**HTMLAudioElement*/audio, /**Number*/length) 
{ 
    function onEnd(){ 
     audio.play(); 
    } 

    /* length is msec */ 
    if(length > 0) { 
     audio.__timer = window.setInterval(onEnd, length); 
    } 
} 

function stopAudioWithLoop (/**HTMLAudioElement*/audio) 
{ 
    if(audio.__timer) { 
     audio.__timer = window.clearInterval(audio.__timer); 
    } 
} 

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

***playAudioWithLoop(document.getElementById("audio1"), 12*1000);*** 
***stopAudioWithLoop(document.getElementById("audio1"));*** 
+0

我不完全確定如何實現並編輯它。 我是否期望用此代替當前的代碼,或者除了我目前的代碼? 在給定的代碼中究竟應該編輯什麼(如果有的話)? – zants