Воспроизведение звука с помощью JavaScript - PullRequest
2 голосов
/ 04 августа 2010

Неважно, что я делаю, я просто не могу заставить его воспроизводить звук в Firefox, IE или Chrome.

<html>
<head>
<script type="text/javascript">

    function play() 
 {
     var embed = document.createElement('object');

     embed.setAttribute('src', 'c:\\test.wav');
     embed.setAttribute('hidden', true);
     embed.setAttribute('autostart', true);
     embed.setAttribute('enablejavascript', true);

     document.childNodes[0].appendChild(embed);

 }

// -->
</script>
</head>
<body onload="play();">
</body>
</html>

Ответы [ 3 ]

6 голосов
/ 04 августа 2010

Попробуйте использовать эту исправленную версию функции play ()

function play() 
{
  var embed=document.createElement('object');
  embed.setAttribute('type','audio/wav');
  embed.setAttribute('data', 'c:\test.wav');
  embed.setAttribute('autostart', true);
  document.getElementsByTagName('body')[0].appendChild(embed);
}

Проблема с вашим кодом заключалась в том, что вы использовали атрибут src для тега . Вместо этого используйте атрибут данных для тега .



Если вы пытаетесь добиться максимальной совместимости от этого, вам также следует рассмотреть возможность добавления тега внедрения в качестве альтернативы тегу объекта. Вот как это работает:

<object data="test.wav" type="audio/wav" autostart="true">
<embed src="test.wav" autostart="true" alt="Could not load audio" />
</object>

Это работает аналогично тегу noscript, где старые браузеры, которые не поддерживают тег объекта, прибегают к тегу embed.

2 голосов
/ 29 декабря 2013

Попробуйте этот метод, чтобы воспроизвести звук во всех ваших браузерах:

function playSound(soundfile_ogg, soundfile_mp, soundfile_ma) {
    if ("Audio" in window) {
        var a = new Audio();
        if (!!(a.canPlayType && a.canPlayType('audio/ogg; codecs="vorbis"')
                .replace(/no/, '')))
            a.src = soundfile_ogg;
        else if (!!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/,
                '')))
            a.src = soundfile_mp;
        else if (!!(a.canPlayType && a.canPlayType(
                'audio/mp4; codecs="mp4a.40.2"').replace(/no/, '')))
            a.src = soundfile_ma;
        else
            a.src = soundfile_mp;

        a.autoplay = true;
        return;
    } else {
        alert("Time almost up");
    }
}

чтобы воспроизвести звук, сделайте что-то вроде этого:

playSound("/file/horse.wav", "/file/horse.mp3","/file/horse.m4a");
0 голосов
/ 27 января 2011

FYI с использованием тега <embed> сделает ваш код недействительным.На данный момент у вас есть два варианта, если вы хотите воспроизводить звуки на своей веб-странице: [1] используйте метод, который работает в большинстве браузеров сегодня, но который сделает ваш HTML недействительным (при использовании <embed>)или [2] используйте методы, которые будут работать только в некоторых из последних браузеров, но которые будут подходить в будущем и также считаются действительными HTML (с использованием <audio> или <object>).

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