Ich versuche, eine Audiodatei abzuspielen, wenn ich auf die Schaltfläche klicke, aber es funktioniert nicht. Mein HTML-Code lautet:
<html>
<body>
<div id="container">
<button id="play">
Play Music
</button>
</div>
</body>
</html>
Mein JavaScript ist:
$('document').ready(function () {
$('#play').click(function () {
var audio = {};
audio["walk"] = new Audio();
audio["walk"].src = "http://www.rangde.org/static/bell-ring-01.mp3"
audio["walk"].addEventListener('load', function () {
audio["walk"].play();
});
});
});
Auch dafür habe ich eine Geige erstellt .
javascript
jquery
html
Suresh Pattu
quelle
quelle
Antworten:
Welcher Ansatz?
Sie können Audio mit
<audio>
Tag oder<object>
oder abspielen<embed>
. Lazy Loading (Laden, wenn Sie es brauchen) Der Sound ist der beste Ansatz, wenn seine Größe klein ist. Sie können das Audioelement dynamisch erstellen. Wenn es geladen ist, können Sie es starten.play()
und anhalten.pause()
.Dinge, die wir benutzt haben
Wir werden
canplay
event verwenden, um festzustellen, dass unsere Datei zur Wiedergabe bereit ist.Es gibt keine
.stop()
Funktion für Audioelemente. Wir können sie nur anhalten. Und wenn wir am Anfang der Audiodatei beginnen möchten, ändern wir ihre.currentTime
. Wir werden diese Zeile in unserem Beispiel verwendenaudioElement.currentTime = 0;
. Um die.stop()
Funktion zu erreichen , halten wir zuerst die Datei an und setzen dann ihre Zeit zurück.Möglicherweise möchten wir die Länge der Audiodatei und die aktuelle Wiedergabezeit kennen. Wir haben bereits
.currentTime
oben gelernt , um die Länge zu lernen, die wir verwenden.duration
.Beispielanleitung
timeupdate
event verwendet, um die aktuelle Uhrzeit zu aktualisieren, wenn sich das Audio.currentTime
ändert.canplay
event verwendet, um Informationen zu aktualisieren, wenn die Datei zur Wiedergabe bereit ist.quelle
ended
Ereignis, bei dem das Audio von Anfang an abgespielt wird .Es funktioniert nicht so,
$("#myAudioElement").play()
wie Sie es erwarten würden. Der offizielle Grund ist, dass durch die Einbindung in jQueryplay()
jedem einzelnen Element eine Methode hinzugefügt wird , die unnötigen Overhead verursachen würde. Stattdessen müssen Sie sich auf die Position im Array der DOM-Elemente beziehen, mit denen Sie abrufen$("#myAudioElement")
, auch bekannt als 0.Dieses Zitat stammt von einem Fehler, der darüber eingereicht wurde und als "feature / wontfix" geschlossen wurde:
quelle
Für alle anderen, die mitmachen, habe ich einfach Ahmets Antwort genommen und die jsfiddle des ursprünglichen Fragestellers hier aktualisiert und ersetzt:
zum
Verlinken in einem frei verfügbaren MP3 aus dem Internet. Vielen Dank, dass Sie die einfache Lösung geteilt haben!
quelle
Ich habe hier eine schöne und vielseitige Lösung mit einem Fallback:
Danach können Sie so viele Audiodaten initialisieren, wie Sie möchten:
Jetzt können Sie das initialisierte Audioelement mit einfachen Ereignisaufrufen wie überall erreichen, wo immer Sie möchten
quelle
JSFiddle-Demonstration
Folgendes verwende ich mit JQuery:
quelle
Wie wäre es mit:
quelle