Jogando som sem a necessidade de instalar a extensão do Media Player
-
19-09-2019 - |
Pergunta
Estou tentando incorporar um som em um site de leilão. Eu quero que toda vez que a oferta de alguém, um som será reproduzido. Eu tentei um simples <embed>
etiqueta com determinada identificação e depois sound.play()
Através de JavaScript.
O som está sendo reproduzido, mas no IE, um novo usuário é solicitado a instalar uma extensão de media player "se ele confiar no site".
Existe uma maneira de fazê -lo tocar sem esta mensagem. O código a seguir está na página:
No HTML:
<embed src="success.wav" autostart="false" width="0" height="0" id="sound1"
enablejavascript="true">
No JavaScript:
function PlaySound(soundObj) {
var sound = document.getElementById(soundObj);
sound.Play();
}
E a chamada para a função:
PlaySound("sound1");
Solução
Se você se sentir confortável exigindo que o usuário tenha flash, eu recomendo SoundManager2. Ele usa flash em segundo plano, mas é configurado inteiramente através do JavaScript, e é muito personalizado.
Se você quiser fazer isso completamente nativamente no navegador, você pode usar o <audio>
Tag, mas você descobrirá que funciona apenas nos navegadores mais novos, e ainda há alguns problemas de navegador que você encontrará. Este artigo Ajaxiano fornece uma boa visão geral de como fazer isso e quais navegadores suportam quais formatos de áudio.
PS Uma opinião pessoal, se você não se importa: não jogue sons de fundo ou música sem antes pedir ao usuário. Nunca é automático e sempre dê ao usuário a opção de parar ou silenciar o som.
Outras dicas
Bem, a solução funcionou muito bem com o Sound Manager 2. Ao longo de todo o arquivo de instalação é de 2,8 MB, acho que apenas a pequena parte dele realmente foi usada.
O que fiz foi colocar o seguinte código no cabeçalho:
<script type="text/javascript">
soundManager.url = '<?php echo $root_address; ?>/js/soundmanager/swf/';
soundManager.debugMode = false;
soundManager.onload = function() {
var mySound = soundManager.createSound({
id: 'aSound',
url: '<?php echo $root_address; ?>/success.mp3'
});
}
</script>
E substituiu a chamada para a função de som do jogo com este código:
soundManager.play('aSound');
Eu usei a API mais simples para fazê -lo.
Obrigado novamente!