Генерация звука с использованием JavaScript - PullRequest
0 голосов
/ 20 октября 2010

Я пытаюсь генерировать звук с помощью JavaScript.Я использовал следующий код

<html>
  <script type="text/javascript" src="jquery-1.4.2.js"></script>
  <script>
    function PlaySound(soundObj) {
      var sound = document.getElementById(soundObj);
      sound.Play();
    }

    function init() {
      //alert("");
      PlaySound('sound1')
    }

    window.onload = init;
  </script>

  <body>
    <form name="myform">
      <input type=button id="b1" name="b1name" value="Play Sound" onClick="PlaySound('sound1')">
    </form>
    <a href="#" onMouseOver="PlaySound('sound1')">Move mouse here</A>
    <embed src="beep-5.wav"  autostart="false" width="0" height="0" id="sound1" enablejavascript="true">
  </body>
</html>

Звук генерируется при нажатии кнопки и при наведении курсора.Он не генерируется в функции init.Если я вызываю приведенную ниже функцию в другой функции JavaScript, она не работает.Еще один момент: если я продолжу оповещать перед звонком, то будет слышен звук.

PlaySound('sound1')

Я пытался использовать $("#b1").click(); (нажатие кнопки в JavaScript), но он не работает.

Я знаюэто дубликат этого вопроса , но ответ там мне не помог.Я действительно смущен.Пожалуйста, помогите.

Могу ли я воспроизводить этот звук по два раза за раз?

Ответы [ 5 ]

0 голосов
/ 22 октября 2010

Если мы генерируем звук с помощью jquery sound plug, http://plugins.jquery.com/project/sound_plugin воспроизводит звук при запуске / java-скрипте без особых задержек.Хорошо работает в IE и Firefox.

0 голосов
/ 21 октября 2010
  1. быстрый и грязный способ (он также совместим со старыми браузерами, даже IE5) заключается в использовании встроенного небольшого волнового файла в ваш javascript, который затем можно воспроизвести как ресурсы (без сохранения в реальном файле) использовать двоичное кодирование (то же самое, что встраивание PNG в JS). лучший способ - создать аудиообъект JS , воспроизводящий бит (с буфером), который может генерировать любой понравившийся вам кадр-звук ...

  2. использовать JS Audio Object var output = new Audio(); output.mozSetup(1, 44100); var samples = new Float32Array(22050); for (var i = 0, l = samples.length; i < l; i++) { samples[i] = Math.sin(i / 20); } (также здесь)

0 голосов
/ 20 октября 2010

Вводя задержку в соответствии с комментарием casablanca, звук воспроизводится в java-скрипте. Вот код, который я добавил: Эта ссылка Введите задержку

function callback(){
    return function(){
 PlaySound('sound1');

    }
}
function init() {
  //  alert("");
setTimeout(callback(), 500);
 }
0 голосов
/ 21 октября 2010

Если вы хотите, чтобы веб-страница воспроизводила звук через JavaScript, и вы хотите, чтобы страница:

  • Validate
  • работает во всех современных браузерах
  • работа на нескольких платформах
  • работа без плагинов

Ответ прост: вы не можете этого сделать. Конец истории.

Конечно, вы можете привести пример, который работает в одной версии одного браузера на одной платформе, но я вам гарантирую: он не будет работать везде

0 голосов
/ 20 октября 2010

Звуковой файл может не завершить загрузку при вызове init, но если вы включите alert или когда вы нажимаете кнопку вручную, между браузером достаточно времени для загрузки файла.

Как говорится, embed - это нестандартный и устаревший тег, и вы действительно не должны использовать его для воспроизведения звуков. Взгляните на тег HTML5 audio .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...