Onclick e file.wav

di il
6 risposte

Onclick e file.wav

In un file esterno .js ho questo script con un file .wav che simula il click della macchina fotografica quando clicco sul link:
function click(){
if (navigator.appName == "Microsoft Internet Explorer"){
document.write('<bgsound src="click.wav" loop="1">')
}
else {
document.write('<embed src="click.wav" width="0" height="0" autostart="true" loop="1">')
}
 }
Ho tentato in vari modi ma non riesco a richiamarlo quando clicco su questi 2 link:
<a class="pages" href="index.html">-Link1</a>

<a class="hcb" href="#" onclick="return mostraMenu('menu1')">Link2</a>

6 Risposte

  • Re: Onclick e file.wav

    Ciao,

    Ecco un po'di codice adatto all'uopo... l'incompatibilità tra i browser forza ad un po'di giri, ma la cosa è efficace:

    - Nell'head niente embed ed il bgsound ha il src vuoto:
    <BGSOUND id="BGSOUND_ID" LOOP=1 SRC="">
    - Un paio di script:
    <script language="JavaScript">
    function playSound() {
      if (navigator.appName == "Microsoft Internet Explorer"){
        document.all['BGSOUND_ID'].src='click.wav';
      }else{
        document.getElementById("xxx").innerHTML="<embed src='click.wav' hidden=true autostart=true loop=false>";
      }
    }
    
    function stopSound() {
      if (navigator.appName == "Microsoft Internet Explorer"){
        document.all['BGSOUND_ID'].src="";
      }else{
        document.getElementById("xxx").innerHTML="";
      }
    }
    </script>
    - Ed il codice per il body e per i link:
    <body bgcolor="#000000" onfocus="stopSound()">
    <span id="xxx"></span>
    <a class="pages" href="index.html" onclick="playSound()">-Link1</a>
    <a class="hcb" href="#" onclick="playSound();return mostraMenu('menu1')">Link2</a>
    Nota di nuovo lo span (qui è semplicemente un placeholder - serve solo a mozilla/firefox per la generazione "al volo" di un embed) e soprattutto la stopSound nella onfocus del body... se la togli ottieni di suonare l'ultimo bgsound impostato se minimizzi e rimassimizzi la finestra o se passi ad altre finestre e torni su quella contenente il suono.

    Ciaociao
  • Re: Onclick e file.wav

    bottomap ha scritto:


    Ciao,

    Ecco un po'di codice adatto all'uopo... l'incompatibilità tra i browser forza ad un po'di giri, ma la cosa è efficace:

    - Nell'head niente embed ed il bgsound ha il src vuoto:
    <BGSOUND id="BGSOUND_ID" LOOP=1 SRC="">
    - Un paio di script:
    <script language="JavaScript">
    function playSound() {
      if (navigator.appName == "Microsoft Internet Explorer"){
        document.all['BGSOUND_ID'].src='click.wav';
      }else{
        document.getElementById("xxx").innerHTML="<embed src='click.wav' hidden=true autostart=true loop=false>";
      }
    }
    
    function stopSound() {
      if (navigator.appName == "Microsoft Internet Explorer"){
        document.all['BGSOUND_ID'].src="";
      }else{
        document.getElementById("xxx").innerHTML="";
      }
    }
    </script>
    - Ed il codice per il body e per i link:
    <body bgcolor="#000000" onfocus="stopSound()">
    <span id="xxx"></span>
    <a class="pages" href="index.html" onclick="playSound()">-Link1</a>
    <a class="hcb" href="#" onclick="playSound();return mostraMenu('menu1')">Link2</a>
    Nota di nuovo lo span (qui è semplicemente un placeholder - serve solo a mozilla/firefox per la generazione "al volo" di un embed) e soprattutto la stopSound nella onfocus del body... se la togli ottieni di suonare l'ultimo bgsound impostato se minimizzi e rimassimizzi la finestra o se passi ad altre finestre e torni su quella contenente il suono.

    Ciaociao
    Prima di inserirlo volevo sapere una cosa: siccome la home la valido com xhtml 1.0 lo script intendo metterlo in un file .js (dove ho tutti gli altri) e richiamarlo nei link, come faccio?
  • Re: Onclick e file.wav

    Ciao,

    Basta infilare il codice nel .js e poi nell'head dichiarare qualcosa del tipo
    <SCRIPT SRC="sorgente.js"></SCRIPT>

    Ciaociao
  • Re: Onclick e file.wav

    bottomap ha scritto:


    Ciao,

    Basta infilare il codice nel .js e poi nell'head dichiarare qualcosa del tipo
    <SCRIPT SRC="sorgente.js"></SCRIPT>

    Ciaociao
    Funziona ma...

    Nel file script.js ho messo:
    //click fotografico onclick 
    function playSound() {
    if (navigator.appName == "Microsoft Internet Explorer"){ 
    document.all['BGSOUND_ID'].src='click.wav'; 
    }
    else{ 
    document.getElementById("xxx").innerHTML="<embed src='click.wav' hidden=true autostart=true loop=false>"; 
    } 
     } 
    function stopSound() { 
    if (navigator.appName == "Microsoft Internet Explorer"){ 
    document.all['BGSOUND_ID'].src=""; 
    }
    else{ 
    document.getElementById("xxx").innerHTML=""; 
    } 
     }
    nella home in head:
    <script language="JavaScript" type="text/javascript" src="script.js"></script>
    
    <bgsound id="BGSOUND_ID" loop="1" src="">
    in body:
    <body onfocus="stopSound()"> 

    funziona ma nei 3 link centrali solo su quello in fondo il file wav suona giusto.

    Se poi validi la home con W3C xhtml 1.0 da errore

    http://www.photoman.altervista.org
  • Re: Onclick e file.wav

    Ciao,

    Per il suono sui link che vanno a pagine esterne dovrai modificare lo script e fare in modo che il suono sia presente anche nella pagina di arrivo. Al momento del cambio di pagina il suono viene interrotto, e non si può ritardare direttamente il cambio... la cosa migliore per i link esterni probabilmente è suonare sull'onload della pagina di arrivo.

    Per il w3c... bgsound non è un tag accettato da xhtml1.0 pertanto non si può utilizzare. L'embed può dare problemi con ie, pertanto la cosa migliore potrebbe essere l'utilizzo dell'<object>... anche qui però i browser possono avere comportamenti diversi.

    Per IE<7 potresti immaginare il codice seguente nel body:
    <object data="click.wav" type="audio/x-wav" width="0" height="0" id="xxx" classid="CLSID:05589FA1-C356-11CE-BF01-00AA0055595A">
      <param name="src" value="click.wav">
      <param name="autoplay" value="false">
      <param name="autoStart" value="0">
      <param name="ShowDisplay" value="0">
      <param name="ShowControls" value="0">
    </object>
    - rimuovere la stopsound (sia dallo script che dall onfocus)
    - e modificare la playsound nello script in una semplice:
    function playSound() {
      document.getElementById("xxx").Run();
    }
    La cosa però funzionerebbe solo con IE<7 (caricando di nascosto il controllo di wmp). Per IE7 e/o firefox dovresti invece utilizzare un object diverso:
    <object type="audio/x-wav" data="click.wav" width="0" height="0">
      <param name="src" value="click.wav">
      <param name="controller" value="false" >
      <param name="autoplay" value="false">
      <param name="autoStart" value="0">
    </object>
    Potresti in questo caso sfruttare i commenti condizionali:
    <!--[if gte IE 7]> <!-->
    ... codice IE7
    <!--<![endif]-->
    <!--[if lt IE 7]>
    ... codice IE<7
    <!--<![endif]-->
    <!--[if !IE]> <!-->
    ... codice non IE
    <!--<![endif]-->

    Non ho mai provato comunque una cosa del genere, dovresti fare qualche tentativo e documentarti un po'sulla cosa... qualche informazione utile qui:




    PS: Va bene il copia-incolla, ma xxx è solo un placeholder per un id, non c'è bisogno di mantenerlo...

    Ciaociao
  • Re: Onclick e file.wav

    Quasi ci siamo, ora valida W3c ma c'è ancora qualcosa da sistemare.

    Nel file esterno:
    //click fotografico onclick 
    function playSound() {
    document.getElementById("xxx").Run(); 
    }
    nella home in body:
    <object data="click.wav" type="audio/x-wav" width="0" height="0" id="xxx" classid="CLSID:05589FA1-C356-11CE-BF01-00AA0055595A"> 
    <param name="src" value="click.wav" /> 
    <param name="autoplay" value="false" /> 
    <param name="autoStart" value="0" /> 
    <param name="ShowDisplay" value="0" /> 
    <param name="ShowControls" value="0" /> 
    </object>
    ...più i link, ma il wav si attiva solo sul link sotto "...il Maestro"
    e su FF non funziona
Devi accedere o registrarti per scrivere nel forum
6 risposte