2010-02-19 10 views
7

Simile a this domanda, il mio HTML assomiglia a questo:Javascript: quale argomento viene chiamato con la funzione specificata nell'evento onload del corpo?

<body id="body" onload="loader()"> 
</body> 

ho sempre presumo, come this doc dice che onload è dato senza argomenti. Tuttavia, ho chiamato l'argomento, e ha fatto un po 'di ispezione approfondita, e ha scoperto che ho ricevuto un oggetto simile a questo:

{originalTarget : DOM, 
preventCapture : function, 
target : DOM, 
cancelable : Bool, 
currentTarget : DOM, 
timeStamp : Int, 
bubbles : Bool, 
type : String, 
eventPhase : Int, 
preventDefault : function, 
initEvent : function, 
stopPropagation : function, 
CAPTURING_PHASE : Int, 
AT_TARGET : Int, 
BUBBLING_PHASE : Int, 
explicitOriginalTarget : DOM, 
preventBubble : function, 
isTrusted : Bool, 
MOUSEDOWN : Int, 
MOUSEUP : Int, 
MOUSEOVER : Int, 
//... (more constants) 
} 

Qualcuno ha idea di cosa che cosa è, o quale potrebbe essere il suo nome di classe?

risposta

9

Questo sembra essere l'oggetto standard DOM Event JavaScript. Descrive la natura dell'evento che sta gestendo la tua funzione.

UPDATE In risposta al commento discussione:

Browser diversi forniscono l'oggetto Event in diversi modi:

  • IE non passa come un argomento della funzione e utilizza invece la proprietà window.event.
  • Firefox lo passerà come primo argomento.
  • Chrome sembra fare entrambe le cose.
+0

+1 Nice detective work :) – Sampson

+0

Credo che qualsiasi funzione chiamata da qualsiasi gestore di eventi (cioè non solo 'body.onload') ottiene questo oggetto come primo argomento. –

+0

@Paul: Ho pensato che c'erano differenze tra le implementazioni del browser e il modo in cui gli eventi sono stati collegati (utilizzando i modelli di registrazione degli eventi tradizionali o avanzati). Ma potrei essere completamente sbagliato (e troppo stanco per cercarlo al momento). –

Problemi correlati