Неважно, что я делаю, я просто не могу заставить его воспроизводить звук в 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>
2
FaNIX 4 Авг 2010 в 09:31

3 ответа

Лучший ответ

Попробуйте использовать эту исправленную версию функции 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, который предназначен для тега . Вместо этого используйте атрибут данных для тега .



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

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

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

6
Kranu 4 Авг 2010 в 06:37

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

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");
2
Nosakhare Belvi 28 Дек 2013 в 23:35

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

0
thdoan 26 Янв 2011 в 22:11