2014-02-16 6 views
6

So habe ich in meinem Javascript eine if-Anweisung. Wenn es wahr zurückgibt, öffnet es eine Alarmbox und gibt einen Alarmton ab. Das Problem ist, dass der Sound nicht abgespielt wird, bis ich den ok Knopf drücke. HierHaben Sie Sound spielen, wenn Alarm ausgelöst wird

ist die relevante Information:

if (x > 10) { 
     var snd = new Audio('/alarm.mp3'); 
     snd.play(); 
     alert("Thank you!"); 
    } 

Idealerweise möchte ich den Ton, der um 6 Sekunden lang zu spielen, bis er am Ende oder bis der Benutzer Hits ist geschlossen aus dem Dialog. Aber es wäre gut genug, den Alarm auszulösen, bevor man die Alarmbox schließt.

+0

weil Alarm ein blockierenden Aufruf ist, führt nichts, während es geöffnet ist, sollten Sie eine HTML verwenden modale Box, http://www.webdesignerdepot.com/2012/10/creating-a-modal-window-with-html5-and-css3/ –

+1

Nur eine Ahnung: whill der Sound spielen, wenn Sie die Warnung verzögern, wie ' setTimeout (function() {alert ("Danke!")}, 500) '? –

+0

Die eine Sache, die ich an der Warnung im Gegensatz zu einer modalen gefällt, ist, dass der Browser auf die Seite mit der Warnung gehen wird, wenn Sie in einer anderen Registerkarte sind. – moosilauke18

Antwort

14

Preload Ihre Audio-Datei im html vorher wie:

<audio id="xyz" src="whatever_you_want.mp3" preload="auto"></audio> 

if(x > 10) 
{ 
    document.getElementById('xyz').play(); 
    alert("Thank you!"); 
} 

Dies sollte sicherlich funktionieren.

+0

Wie auch immer, um das Audio vorzeitig zu beenden, wenn ein Benutzer die Warnung knapp schließt? – moosilauke18

+1

Es ist eine schlechte Übung, irgendetwas auf "Alert Okay" zu tun, klicken Sie immer noch können Sie versuchen, etwas wie: 'Funktion myFunction()' '{' 'var r = Warnung (" Sie drückten einen Knopf! ");' 'wenn (r == true)' '' { } '' ' else' ' '{ ' document.getElementById ('XYZ') stop();. '' ..OR..' 'document.getElementById ('xyz'). controls.stop();' '} – MixCoded

+0

funktioniert nicht, Ton ist nach dem Alarm geschlossen – cikatomo

0

Sie können versuchen, setTimeout() zu verwenden.

if (x > 10) { 
     var snd = new Audio('/alarm.mp3'); 
     snd.play(); 
     setTimeout(function(){alert("Thank you!")},6000); 
    } 
+0

Das Problem damit ist, dass, wenn ich X zum zweiten Mal einen weiteren Alarm zu tun Die Warnung funktioniert wegen des setTimeout nicht. – moosilauke18

1

Warum nicht die HTML5-Audioereignisse nutzen?

Die Veranstaltung endete triggred wird, sobald die Audio

snd.addEventListener('ended', showAlert); 

function showAlert() { 
alert("YOUR MESSAGE"); 
} 
0

spielen Enden können Sie verwenden:

var snd = new Audio('/alarm.mp3');  
snd .onended = function() { alert("Thank you!"); }; 
snd .play(); 
Verwandte Themen