la riproduzione del suono senza la necessità di installare dei media estensione giocatore
-
19-09-2019 - |
Domanda
Sto cercando di incorporare un suono in un sito di aste. Voglio che l'offerta ogni volta che qualcuno, verrà riprodotto un suono. Ho provato un semplice tag <embed>
con dato ID, e poi sound.play()
tramite JavaScript.
Il suono viene riprodotto, ma in IE, un nuovo utente viene chiesto di installare un lettore multimediale estensione "se lui / lei si fida del sito".
C'è un modo per farlo giocare senza questo messaggio. Il seguente codice è nella pagina:
Nel HTML:
<embed src="success.wav" autostart="false" width="0" height="0" id="sound1"
enablejavascript="true">
Nel Javascript:
function PlaySound(soundObj) {
var sound = document.getElementById(soundObj);
sound.Play();
}
E la chiamata alla funzione:
PlaySound("sound1");
Soluzione
Se sei a tuo agio che l'utente debba disporre di Flash, vi consiglio SoundManager2 . Esso utilizza Flash in background, ma è configurato interamente attraverso JavaScript, ed è molto personalizzabile.
Se si vuole fare completamente nativamente nel browser è possibile utilizzare il tag <audio>
, ma troverete funziona solo nei molto più recenti dei browser, e ci sono ancora alcuni problemi cross-browser che stai andando a colpire su. Questo articolo Ajaxian offre una buona panoramica di come farlo e quali i browser supporto quali formati audio.
P.S. Un parere personale, se non ti dispiace: Non giocare sfondo suoni o musica senza prima chiedere all'utente. Mai autoplay e sempre dare all'utente la possibilità di interrompere o disattivare l'audio.
Altri suggerimenti
Beh, la soluzione ha funzionato benissimo con Sound Manager 2. Benche il file di installazione è tutta 2.8MB, penso che solo una piccola parte di esso effettivamente utilizzato.
Quello che ho fatto è mettere il seguente codice nell'intestazione:
<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 sostituito la chiamata alla funzione audio gioco con questo codice:
soundManager.play('aSound');
Ho usato l'API più semplice per farlo.
Grazie ancora!