Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197

    registrare un evento globalmente a tutta la pagina

    [scripting-javascript-dhtml]


    E' possibile registrare un evento a tutta la pagina invece di inserire il "listener" in ogni oggetto html?! mi spego meglio..
    passando con il mouse sopra i vari campi <input> devo scrivere un messaggio sulla status bar.Per fare questo ho inserito su ogni campo i listener "onmouseOver=...." e "onMouseOut=..." che richiamano le relative funzioni che andranno a scrivere sulla statusbar di explorer,
    mi chiedevo se c'era un modo di registrare questi eventi globalmente a tutta la pagina in modo che ogni volta che passo sopra a qualsiasi ogetto questi vegano invocati, evitando cosi di inserire a tutti gli oggetti il relativo listener, spero di essermi spiegato, chiaramente nella funzione richiamata van intercettato l'oggetto chiamante, ma quello non è un problema, quello che non so è come registrare l'evento a tutta la pagina con un colpo solo(ammesso che si possa fare).

    Poi mi chiedevo se è possibile usare solamente l'evento "onMouseMove=.." cercando di capire nella funzione chiamata quando il mouse è entrato sul 'oggetto e quando è uscito, evitando di chiamare separatamente i due metodi "onMouseOver" e "onMouseOut", si puo fare?

    grazie a chiunque mi possa aiutare, saluti Alessio

  2. #2
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    help me!!!!

  3. #3
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    ho postato solo per rimettere in evidenza il 3d, nessuno puo darmi una mano?!

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    esempio
    codice:
    <html>
    <head>
    <title></title>
    <style type="text/css">
    <!--
    #primo {
    	background-color:#0f0;
    }
    #secondo {
    	background-color:#00f;
    }
    #terzo {
    	background-color:#f00;
    }
    -->
    </style>
    </head>
    <body>
    <div id="primo">ciao, sono un div 
      <span id="secondo">ciao, sono uno span ciao, sono un link</span>
    </div>
    <hr />
    <div id="registro"></div>
    
    <script language="JavaScript" type="text/javascript">
    <!--
    document.onmousemove=getMouseMove
    function getMouseMove(e){
    if(!e) e=window.event;
    var source=(e.target)?e.target:e.srcElement;
    
    document.getElementById('registro').innerHTML='TAG: '+source.tagName.toLowerCase()+' | ID: '+((source.id)?source.id:'assente')
    }
    //-->
    </script>
    
    </body>
    </html>
    ho messo lo script nel body x essere sicuro che esista il "registro" su cui annotare le informazioni
    ciao

  5. #5
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    grande xinod, questa soluzione è fighissima, l'ho adattata al mio scopo e funziona alla grande anche se non ho ben capito una cosa che magari puoi spiegarmi:
    nella riga
    codice:
    document.onmousemove=getMouseMove
    nella dichiarazione della funzione ci sarebbe anche un parametro "e" da passare che nella riga qui sopra non vedo, poi non ho ben capito l'assegnazione che hai fatto, cioe la funzione assegnata all'evento del document, non dovrebbe essere il contrario? puoi spiegarmi?

    in ogni caso grazie mille

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    quando inserisci un event handler via javascript il nome della funzione richiamata non vuole le parentesi
    function allerta(){
    alert('ciao')
    }
    window.onload=allerta

    questo chiaramente nel caso tu non debba passare parametri (o richiamare, come in questo caso, un' unica funzione)
    altrimenti avresti bisogno di una funzione anonima

    function allerta(cosa){
    alert(cosa)
    }
    window.onload=function(){allerta('ciao');}

    ora, come hai ben notato, si passa un 'e', ma questa lettera (non a caso, sta per event e dice che verra' utilizzata un' istanza dell' oggetto event nella gestione dell' event handler) e' implicitamente passata alla funzione come primo parametro (se non ve ne sono altri) quando inserisci un event handler via javascript

    per confonderti ancora un po' di + le idee
    se lo settassi via html, potresti x es. scrivere il gestore evento nel tag body, questo dovrebbe essere scritto cosi'
    <body onmousemove="getMouseMove(event)">
    specificando chiaramente che si vuole che l' oggetto event venga ascoltato nella funzione

  7. #7
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    yeahhhh sei stao chiaro, grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.