Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130

    facade pattern e interfaccia evento

    ciao. sto studiacchiando il facade patern e ne ho uno qui per la gestione dell'interfaccia evento (primo parametro passato ad ogni funzione). Ecco il codice (a fine codice spiego il problema che sto incontrando)

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento senza titolo</title>
    
    </head>
    
    <body id="body">
    
    <h1>Facade Pattern</h1>
    
    <form action="server.php" method="post" id="f">
    	<input type="text" name="t" value="" />
    	<input type="submit" name="submit" value="it ain't submit man" id="submit" />
    </form>
    
    
    
    
    it ain't work man!
    
    
    <script type="text/javascript">
    	
    /*
    	il facade pattern serve, lo dice il nome stesso, a creare una facciata che migliori
    	e velocizzi la gestione di routine relative ad un certo aspetto della programmazione
    	JavaScript (spesso relativa ai browser). Per esempio la gestione di questioni cross-browser
    	e' la tipica situazione dove il facade pattern puo' tornare utile.
    */
    	
    	// gestione differenze relative all'oggetto e (interfaccia evento)
    	// usando il facade pattern	
    	
    	var Ev = {
    		getEvent: function(e){
    			// w3c or IE 
    			return e || window.event;
    		},
    		getTarget: function(e){
    			// w3c or IE
    			return e.target || e.srcElement;
    		},
    		preventDefault: function(e){
    			if(e.preventDefault){
    				// w3c interface
    				e.preventDefault();
    			}
    			else{
    				// IE model
    				e.returnValue = false;
    			}
    		},
    		exec: function(e, method){
    			this[method].call(this, this.getEvent(e))
    		}
    	}
    	
    	document.getElementById("f").onsubmit = function(e){
    		Ev.exec(e, "preventDefault");
    	}
    		
    	document.getElementById("gl").onclick = function(e){
    		Ev.exec(e, "preventDefault");
    		var el = Ev.exec(e, "getTarget");
    		alert("tag: " + el.tagName + " || id: " + el.id);
    	}	
    	
    </script>
    
    </body>
    </html>
    il problema e' che Ev.exec(e, "getTarget"); non restituisce l'elemento su cui e' stato scatenato l'evento come invece ci si aspetterebbe. Dove sta l'inghippo?

  2. #2
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <
    title>Documento senza titolo</title>

    </
    head>

    <
    body id="body">

    <
    h1>Facade Pattern</h1>

    <
    form action="server.php" method="post" id="f">
        <
    input type="text" name="t" value="" />
        <
    input type="submit" name="submit" value="it ain't submit man" id="submit" />
    </
    form>




    [
    url="http://www.google.com"]it ain't work man![/url]


    <script type="text/javascript">
        
    /*
        il facade pattern serve, lo dice il nome stesso, a creare una facciata che migliori
        e velocizzi la gestione di routine relative ad un certo aspetto della programmazione
        JavaScript (spesso relativa ai browser). Per esempio la gestione di questioni cross-browser
        e' 
    la tipica situazione dove il facade pattern puo' tornare utile.
    */
        
        // gestione differenze relative all'
    oggetto e (interfaccia evento)
        
    // usando il facade pattern    
        
        
    var Ev = {
            
    getEvent: function(e){
                
    // w3c or IE 
                
    return || window.event;
            },
            
    getTarget: function(e){
                
    // w3c or IE
                
    return e.target || e.srcElement;
            },
            
    preventDefault: function(e){
                if(
    e.preventDefault){
                    
    // w3c interface
                    
    e.preventDefault();
                }
                else{
                    
    // IE model
                    
    e.returnValue false;
                }
            },
            
    exec: function(emethod){
                return 
    Ev[method].call(EvEv.getEvent(e))
            }
        }
        
        
    document.getElementById("f").onsubmit = function(e){
            
    Ev.exec(e"preventDefault");
        }
            
        
    document.getElementById("gl").onclick = function(e){
            
    Ev.exec(e"preventDefault");
            var 
    el Ev.exec(e"getTarget");
            
    alert("tag: " el.tagName " || id: " el.id);
        }    
        
    </script>

    </body>
    </html> 
    Ti eri scordato un return.

    In exec ho preferito usare Ev al posto
    di this che nel contesto per me a poco senso.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    grazzzzzie! sono scemo!

    ciao

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.