Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    event.preventDefault() sull'evento onkeydown

    questa è una funzione chiamata come listener sull'evento onkeydown:
    codice:
    function onDocKeyDown( event ) {
    		if ( event.target.contentEditable != 'inherit' || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
    				
    		var triggered = false;
    
    		switch( event.keyCode ) {
    			// se premi freccia su
    			case 33: navigatePrev(); triggered = true; break; 
    			// se premi freccia giù
    			case 34: navigateNext(); triggered = true; break;
    			// sinistra
    			case 37: navigateLeft(); triggered = true; break;
    			// destra
    			case 39: navigateRight(); triggered = true; break;
    		}
    
    		if( triggered ) {
    			event.preventDefault();
    		}
    		else if ( event.keyCode === 27 && supports3DTransforms ) { //premendo Esc
    			if( visionePanoramicaAttiva() ) {
    				deAttivaVisionePanoramica();
    			}
    			else {
    				attivaVisionePanoramica();
    			}
    	
    			event.preventDefault();
    		}
    
    	}
    dunque, con lo switch sono definiti una serie di casi in cui premendo le frecce della tastiera vengono attivate determinate funzioni e la variabile triggered assume valore true.
    Poi dopo c'è una struttura if-elseif in cui compare per due volte event.preventDefault. L'uso di questo metodo qui non mi è chiaro. preventDefault() serve per cancellare un evento di default: se fosse un link e lo attivassi su un link fermerei il reindirizzamento ad una nuova pagina; se fosse un submit potrei bloccare la funzione di invio attraverso la tastiera. Ma qui? perchè è necessario? Qual è l'evento di default che si vuole evitare?

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    dal nome sembrerebbe l' evento sia rilevato sul body quindi probabilmente scrollare l' intero documento

  3. #3
    Originariamente inviato da Xinod
    dal nome sembrerebbe l' evento sia rilevato sul body quindi probabilmente scrollare l' intero documento
    ne dubito: la funzione è chiamata in un listener sull'evento onkeydown, quindi non credo che lo scroll sia interessato

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    l' elemento interessato chi e'?

  5. #5
    document.addEventListener( 'keydown', onDocKeyDown, false );

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    disattiva gli eventi di default quando vengono premuti i tasti direzionali (su,giu,destra,sinistra) e ESC.

    Quindi disattiva lo scroll(come ti ha già detto xinod) nel caso si preme uno dei tasti direzionali, (forse vengono usati per la navigazione di una mappa?) per il tasto ESC non so quale sia l'evento che si attiva(chiusura finestra modale?)...

    Se magari ci spieghi in che contesto hai inserito questo script forse riusciamo a capirlo.

  7. #7
    scusa Xinod, avevo male interpretato la tua prima risposta.
    dunque, lo script non è scritto da me, l'ho tratto da un sito web: serve a creare un menù in 3d, gli slide corrispondono a delle section che possono scorrere o premendo col mouse degli appositi tasti di controllo oppure interagendo con la tastiera (nel modo descritto dalla precedente funzione). io qui ho riposto l'attenzione sulla funzione che gestisce i controlli con la tastiera.
    con il tasto Esc viene attivata e deattivata una visione panoramica delle slide: viene effettuato uno zoom-out e vengono visualizzate più slide a schermo. con le frecce si scorre fra le slide.

    lo scroll praticmante non c'è sulla pagina, non è attivo, anche riducendo le dimensioni della finestra lo scroll non è visualizzato: deve essere disattivato attraverso un altro script.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Lasciando perdere l'ultima frase che non mi è chiara, levando il "preventDefault" lo scorrimento delle slide rimarrebbe cosi come' ma si sposterebbe la "visuale dell'utente" in basso/alto/destra/sinistra, mentre cosi rimane fissa e i tasti direzionali servono esclusivamente per lo scorrimento delle slide(non per lo scroll).

    Cmq secondo me la cosa migliore è fare qualche prova, basta che commenti il "preventDefault" e vedi se e come cambia il comportamento dello script.


  9. #9
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    no problem, ma sembrerebbe essere quello
    lo lascerei comunque

    ciao

  10. #10
    dev'essere evidentemente come dite, non ci sono altre spiegazioni.

    ringrazio entrambi per l'aiuto

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 © 2025 vBulletin Solutions, Inc. All rights reserved.