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");
È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top