Воспроизведение звука в сафари - PullRequest
1 голос
/ 08 июня 2011

Я пытаюсь воспроизвести звук в Safari на специальном мероприятии. Это то, что я делаю

<html>
    <head>
        <in a js file>
            if(event)
                document.getElementById('sound').play();
        </in a js file>
    </head>
    <body>    
        <audio id="sound" src="pling.mp3"></audio> 
    </body>
</html>

Звук pling.mp3 находится в той же папке, что и HTML-файл.

Результат в консоли разработчика Safari: TypeError: Результат выражения 'document.getElementById (' sound '). Play' [undefined] не является функцией.

Что я делаю не так? Разве это не так, как это должно работать?

Ответы [ 2 ]

3 голосов
/ 04 июня 2012

Попробуйте следующее:

document.getElementById('sound')[0].play();
0 голосов
/ 04 июня 2012

Я бы использовал Audio API , как объяснено здесь , для воспроизведения звуковых эффектов после определенных событий. На мой взгляд, аудио-тег больше подходит для воспроизведения, остановки и управления песнями через пользовательский интерфейс. Если вы используете теги audio, вы должны сделать паузу и перемотать, прежде чем снова можно будет воспроизвести. Вы можете использовать этот скрипт , который делает это автоматически.

Если вы хотите воспроизводить звук, например, при событиях наведения, сделайте что-то подобное в jQuery:

// iterate through the elements that must have audio applied on hover
$('.audio_effect').each(function() {
  $(this).on('mouseover', function() {
    new Audio('path-to-audiofile.mp3').play();
  });
});

Поскольку вы не можете снова воспроизвести элемент Audio без сброса его внутреннего указателя, самый простой способ - просто создать новый элемент при каждом наведении, как я делал выше.

...