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(); ?>" />

работает для меня.