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)
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?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>

Rispondi quotando