2009-09-29 16 views
5

Durante il tentativo di eseguire il debug di ciò che viene inviato, ho scritto questo.<form action = "javascript: alert (this);"> cos'è "questo"?

<form action="javascript:alert(this);" 
  1. E 'possibile avvertire ciò che è di essere presentati?
  2. Qui "questo" indica cosa?

Ho ottenuto oggetto nella casella di avviso & in grado di decidere qualsiasi cosa fuori di esso. :-)

+1

È possibile ottenere ulteriori informazioni con la console.dir() in Firebug (estensione per Firefox) o Web Inspector (strumenti per sviluppatori Safari/Chrome). – eyelidlessness

+0

Prova anche a fare "alert (this.innerHTML)" –

risposta

7

Nel tuo esempio this è la window oggetto globale. Provate voi stessi:

<form action="javascript:alert(typeof this.setTimeout);"> 

risultati in "function" (vale a dire la funzione globale). Oppure provate:

<form action="javascript:alert(this.nodeType);"> 

risultati in undefined (vale a dire che è non indicando l'elemento del modulo) *.

Il valore di "this" all'interno di un attributo sarà sempre e solo una delle due cose:

  1. l'window oggetto globale
  2. dell'elemento stesso

L'unica volta this punta all'elemento Lo stesso è quando viene utilizzato all'interno di un intrinsic event attribute (quelli che sono prefissati con "on", ad esempio "onclick", "onload", ecc.). Questi attributi sono speciali: il browser ri-scopa this all'elemento su cui si sta attivando l'evento e crea l'oggetto event (con quel nome) disponibile anche all'interno dell'attributo.

Se l'attributo è non uno degli eventi intrinseci, "this" sarà l'window oggetto globale.


Note:

* a meno che naturalmente è capitato di avere una var globale denominato "nodeType"

0

this se utilizzato in JavaScript nell'attributo di un elemento HTML è un riferimento dell'elemento stesso. Quindi this nel contesto del modulo è il modulo oggetto DOM.

In altre parole, un uso piuttosto pratico della parola :)

+2

No, la parola chiave 'this' punta all'elemento solo per gli attributi di eventi intrinseci (es.' "Onfoo" '). –

2
<form action="javascript:alert(this === window);"> 
<input type="submit" value="Submit"> 
</form> 

si solleva "vero" quando si fa clic su "Invia". È l'oggetto finestra. Un riferimento pertinente: https://developer.mozilla.org/en/DOM/element.addEventListener - vedere la sezione sotto "Il valore di questo all'interno del gestore".

Problemi correlati