2010-08-04 3 views
2

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

<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> 
+14

** Пожалуйста, не ** есть фоновые звуки игры автоматически при загрузке страницы. Это одна из самых неприятных вещей, которые может сделать веб-страница (см. Http://www.seomoz.org/blog/how-to-convince-a-client-their-site-doesnt-need-music). По крайней мере, есть возможность отключить его. –

+2

Одна из ваших проблем заключается в том, что '\ t' является вкладкой. –

+0

Исправлена ​​ошибка \ t, но все равно не повезло. – FaNIX

ответ

6

Попробуйте использовать этот пересмотренный вариант функции воспроизведения()

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, который является для < встраивать > тег. Вместо этого используйте атрибут data для объекта < объекта >.



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

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

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

+0

Нет, это тоже не похоже на файл .... – FaNIX

+0

Вы уверены, что у вас есть действующий WAV-файл? Я протестировал свой код на своем компьютере, прежде чем отправлять его, и он работал безупречно в Google Chrome. Попробуйте разместить файл test.wav в том же каталоге, что и файл html, и просто установите атрибут data в test.wav. Кроме того, вы могли бы сообщить мне, какой браузер вы используете, чтобы я мог проверить себя? – Kranu

+0

Хорошо, я переместил файл в ту же папку, он играет с Google Chrome, но не с firefox. Мне на самом деле нужно только работать в firefox. – FaNIX

0

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

2

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

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"); 
Смежные вопросы