HTML5 Audio - звук воспроизводится только один раз
Я использую Chrome, и это мой код:
<audio id="letter_audio" src="audio/bomb.mp3" type="audio/mp3" preload="auto"></audio>
$('.sound').live('click', function () {
var sound = $("#letter_audio")[0];
sound.pause();
sound.currentTime = 0;
sound.play();
return false;
});
Почему звук воспроизводится в первый раз, когда я нажимаю на игру. затем, когда я нажимаю снова, он приостанавливается, как и код. но он просто остается на паузе? я хочу, чтобы он играл, а затем, когда я нажму на него снова, вернитесь к 0 и снова играйте, как в коде?
Ответы
Ответ 1
У меня были аналогичные проблемы с воспроизведением звука, но удалось решить его, вызвав метод load()
перед вызовом play()
. Попробуйте следующее:
$('.sound').live('click', function () {
var sound = $("#letter_audio")[0];
sound.load();
sound.play();
return false;
});
Я думаю, что это лучше, чем сбросить атрибут src
по двум причинам:
- Сохраняет значение
src
в содержании страницы, а не в JavaScript
-
Работает, когда вы вставляете несколько элементов <source>
из разных аудиоформатов:
<audio id="letter_audio">
<source src="audio/bomb.mp3" type="audio/mp3" preload="auto"/>
<source src="audio/bomb.ogg" type="audio/ogg" preload="auto"/>
</audio>
Ответ 2
попробуйте это.. в принципе, сброс атрибута src
должен reset аудио по желанию.
$('.sound').live('click', function () {
var sound = $("#letter_audio")[0];
sound.src = "audio/bomb.mp3";
sound.play();
return false;
});
Ответ 3
кажется, что в настоящее время атрибут currentTime доступен только для чтения (и в 2011 году он получил статус wont-fix)
однако после установки src
на ваш аудио-объект (снова) - как и предложенный @Lloyd - атрибут currentTime становится настраиваемым (по крайней мере, на текущей хромовой версии для linux (24.0.1312.69)).
это означает, добавив странную строку
audio.src = audio.src
ваш пример делает то, что он должен.
в полном объеме:
$('.sound').live('click', function () {
var sound = $("#letter_audio")[0];
sound.src = sound.src;
sound.pause();
sound.currentTime = 0;
sound.play();
return false;
});
так как достаточно установить src
один раз, вы можете вызвать его где-то во время процесса установки.
Ответ 4
вы можете использовать php для добавления запроса в конец url с помощью time();
<source src="URLtoTrack.mp3?<?php echo time(); ?>" />
работает для меня.