Подождите, пока звук не закончится, чтобы использовать страницу

0

Мне нужно воспроизвести звук с помощью Javascript/JQuery. В настоящее время я использую этот код для воспроизведения звука:

var snd = new Audio('dir/file.wav');
snd.play();

Мне нужно, чтобы страница была непригодной до тех пор, пока звук не закончится. Возможно, с каким-то диалогом во время воспроизведения звука. Когда звук заканчивается, модальный дисплей кнопки "ОК", и после нажатия кнопки вы можете продолжить использовать страницу.

Теги:
audio

3 ответа

2
Лучший ответ

ПРИМЕЧАНИЕ. Это не crossbrowser (только для браузеров, совместимых с HTML5)!

Для совместимости с кросс-браузером вам может понадобиться посмотреть на эту ссылку: какой трюк даст самый надежный/совместимый звуковой сигнал в окне браузера для большинства браузеров


Я серьезно не умею объяснять вещи, но я сделал JsFiddle для вас.

http://jsfiddle.net/tnnjB/8/

Или вот код:

HTML:

<audio id="myaudio" onended="onAudioEnded();">
  <source src="http://www.dccl.org/Sounds/pchick-alarm.wav" type="audio/wav">
Your browser does not support the audio element.
</audio>

<input 
    type="button" 
    value="You cannot click me before the sound is over" 
    onclick="javascript:alert('congrats!')"
/>

JAVASCRIPT:

$(function(){
    var audio = document.getElementById("myaudio");
    $.blockUI({message : "Listen to the music!" });  
    audio.play();
});

function onAudioEnded(){ 
    $.unblockUI();
    alert("It over!!");
};

Вещи, которые я использовал: jquery, jquery-ui, jquery BlockUI plugin, HTML5 аудио-тег, google.

Кроме того, этот пример не будет работать в IE, поскольку IE не принимает источник звука на удаленном хосте, но он будет работать, если файл локальный на вашем сервере.

Надеюсь, это поможет вам в достижении ваших потребностей,

Марк

  • 0
    Кажется, это круто, но HTML-код зависает после воспроизведения звука, и вы ничего не можете сделать. Что-то нужно исправить, чтобы это заработало?
  • 0
    Я проверял это на FF, какой браузер вы использовали, чтобы проверить это?
Показать ещё 4 комментария
0

Существует очень простое/короткое решение

Используйте следующий код syntax-

Audio_object=document.getElementById('audio_tag_id');
if(Audio_object.currentTime==Audio_object.duration)
alert('completely played.');

audio_tag_id - это идентификатор <audio> -element.

  • 0
    Спасибо за ответы. К сожалению, я проверил, но это не сработало.
  • 0
    На самом деле этот работает только в ХРОМЕ.
0

Я подумал о следующем подходе: Инициировать таймер и ждать, пока звук не закончится.

Show dialog/dimmed overlay layer
setInterval()
    -> Compare snd->currentTime with snd.duration. If they are the same
        -> Clear interval
        -> Hide dialog/Show OK button

Или

Show dialog/dimmed overlay layer
setInterval()
    -> Is snd.ended ?
        -> Clear interval
        -> Hide dialog/Show OK button

Ещё вопросы

Сообщество Overcoder
Наверх
Меню