Saya mencoba memutar file audio ketika saya mengklik tombolnya, tetapi tidak berfungsi, kode html saya adalah:
<html>
<body>
<div id="container">
<button id="play">
Play Music
</button>
</div>
</body>
</html>
JavaScript saya adalah:
$('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();
});
});
});
Saya telah membuat Biola untuk itu juga.
javascript
jquery
html
Suresh Pattu
sumber
sumber
Jawaban:
Pendekatan yang mana?
Anda dapat memutar audio dengan
<audio>
tag atau<object>
atau<embed>
. Lazy loading (memuat saat Anda membutuhkannya) suara adalah pendekatan terbaik jika ukurannya kecil. Anda dapat membuat elemen audio secara dinamis, saat dimuat Anda dapat memulainya.play()
dan menjedanya.pause()
.Hal-hal yang kami gunakan
Kami akan menggunakan
canplay
event untuk mendeteksi file kami siap untuk dimainkan.Tidak ada
.stop()
fungsi untuk elemen audio. Kami hanya dapat menghentikannya. Dan ketika kita ingin memulai dari awal file audio kita ubah.currentTime
. Kami akan menggunakan baris ini dalam contoh kamiaudioElement.currentTime = 0;
. Untuk mencapai.stop()
fungsi, pertama kita pause file kemudian mengatur ulang waktunya.Kami mungkin ingin mengetahui panjang file audio dan waktu pemutaran saat ini. Kita sudah pelajari di
.currentTime
atas, untuk mempelajari panjangnya kita gunakan.duration
.Panduan Contoh
timeupdate
acara untuk memperbarui waktu saat ini setiap kali audio.currentTime
berubah.canplay
acara untuk memperbarui informasi ketika file siap diputar.$(document).ready(function() { var audioElement = document.createElement('audio'); audioElement.setAttribute('src', 'http://www.soundjay.com/misc/sounds/bell-ringing-01.mp3'); audioElement.addEventListener('ended', function() { this.play(); }, false); audioElement.addEventListener("canplay",function(){ $("#length").text("Duration:" + audioElement.duration + " seconds"); $("#source").text("Source:" + audioElement.src); $("#status").text("Status: Ready to play").css("color","green"); }); audioElement.addEventListener("timeupdate",function(){ $("#currentTime").text("Current second:" + audioElement.currentTime); }); $('#play').click(function() { audioElement.play(); $("#status").text("Status: Playing"); }); $('#pause').click(function() { audioElement.pause(); $("#status").text("Status: Paused"); }); $('#restart').click(function() { audioElement.currentTime = 0; }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <body> <h2>Sound Information</h2> <div id="length">Duration:</div> <div id="source">Source:</div> <div id="status" style="color:red;">Status: Loading</div> <hr> <h2>Control Buttons</h2> <button id="play">Play</button> <button id="pause">Pause</button> <button id="restart">Restart</button> <hr> <h2>Playing Information</h2> <div id="currentTime">0</div> </body>
sumber
ended
acara yang memutar audio dari awal.$("#myAudioElement")[0].play();
Itu tidak bekerja dengan
$("#myAudioElement").play()
seperti yang Anda harapkan. Alasan resminya adalah menggabungkannya ke jQuery akan menambahkanplay()
metode ke setiap elemen, yang akan menyebabkan overhead yang tidak perlu. Jadi, Anda harus merujuknya dengan posisinya dalam larik elemen DOM yang Anda ambil$("#myAudioElement")
, alias 0.Kutipan ini berasal dari bug yang dikirimkan tentang itu , yang ditutup sebagai "feature / wontfix":
sumber
Untuk orang lain yang mengikuti, saya hanya mengambil jawaban Ahmet dan memperbarui jsfiddle penanya asli di sini , menggantikan:
untuk
http://www.uscis.gov/files/nativedocuments/Track%2093.mp3
menghubungkan dalam mp3 yang tersedia secara gratis dari web. Terima kasih telah membagikan solusi mudahnya!
sumber
Saya di sini memiliki solusi yang bagus dan serbaguna dengan fallback:
<script type="text/javascript"> var audiotypes={ "mp3": "audio/mpeg", "mp4": "audio/mp4", "ogg": "audio/ogg", "wav": "audio/wav" } function ss_soundbits(sound){ var audio_element = document.createElement('audio') if (audio_element.canPlayType){ for (var i=0; i<arguments.length; i++){ var source_element = document.createElement('source') source_element.setAttribute('src', arguments[i]) if (arguments[i].match(/\.(\w+)$/i)) source_element.setAttribute('type', audiotypes[RegExp.$1]) audio_element.appendChild(source_element) } audio_element.load() audio_element.playclip=function(){ audio_element.pause() audio_element.currentTime=0 audio_element.play() } return audio_element } } </script>
Setelah itu Anda dapat menginisialisasi audio sebanyak yang Anda suka:
<script type="text/javascript" > var clicksound = ss_soundbits('your/path/to/click.ogg', "your/path/to/click.mp3"); var plopsound = ss_soundbits('your/path/to/plopp.ogg', "your/path/to/plopp.mp3"); </script>
Sekarang Anda dapat mencapai elemen audio yang diinisialisasi di mana pun Anda suka dengan panggilan acara sederhana seperti
onclick="clicksound.playclip()" onmouseover="plopsound.playclip()"
sumber
Demonstrasi JSFiddle
Inilah yang saya gunakan dengan JQuery:
$('.button').on('click', function () { var obj = document.createElement("audio"); obj.src = "linktoyourfile.wav"; obj.play(); });
sumber
Bagaimana dengan:
$('#play').click(function() { const audio = new Audio("https://freesound.org/data/previews/501/501690_1661766-lq.mp3"); audio.play(); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
sumber