2011-12-20 4 views
5

Sto leggendo il codice sorgente di Firefox e vorrei sapere come creare alcune funzioni globali.dove è definito l'oggetto "finestra" o creato nel codice sorgente firefox

Non riesco a trovare dove viene creato l'oggetto finestra o come definire alcuni oggetti globali a cui accedere tramite script.

Mi piacerebbe sapere da dove cominciare o almeno dove è stato definito e creato l'oggetto finestra, grazie!

+2

Stai leggendo il codice sorgente di Firefox? o un codice sorgente JavaScript? – Ibu

+0

il codice sorgente di Firefox. leggere il codice sorgente del motore javascript, non verrà impostato l'oggetto globale, deve essere stato impostato in qualche luogo. – user1108486

risposta

2

L'oggetto window è per lo più definito in nsGlobalWindow.cpp. I metodi/proprietà pubblici appartengono a nsIDOMWindow, nsIDOMJSWindow, nsIDOMEventTarget, nsIDOMStorageIndexedDB e alcune altre interfacce (cercare i macro NS_INTERFACE_MAP_ENTRY ma non tutti si riferiscono alle interfacce pubbliche).

Inoltre, come qualsiasi oggetto DOM, può avere proprietà expando (proprietà impostate per script). Alcune di queste proprietà expando vengono impostate automaticamente quando viene creato il wrapper DOM (classe nsWindowSH). In particolare, i componenti che implementano nsIDOMGlobalPropertyInitializer possono impostare le proprietà in tale fase o i componenti che ascoltano la notifica content-document-global-created.

+0

grazie mille! questo ha risolto il mio problema! e quei hyper link, quanto gentile da parte tua. thx ~ – user1108486

+0

Mi sono imbattuto in questo thread, e ora sono curioso - come fa Javascript che digito nel mio tag '

0

window è l'oggetto globale.

Tutto definito da un campo di applicazione sarà messo in window


Quindi, se si fa (nella dotazione globale):

var myVar = 123; 

alert(myVar); // alerts 123 
alert(window.myVar); // ALSO alerts 123 
+1

grazie per il vostro aiuto. ma voglio dire dove è l'oggetto "finestra" globale definito o creato nel codice sorgente di Firefox. – user1108486

+0

@ user1108486 Non sarebbe nel codice firefox. ff sta usando un motore javascript. – Neal

+1

sì, ma utilizzando il javascript engin, è necessario impostare un oggetto globale che è l'oggetto "finestra". – user1108486

0

ho io davvero mis-capito? Stai scrivendo qualcosa in JavaScript?

In tal caso, è possibile aggiungere all'oggetto finestra semplicemente dichiarando una variabile nell'ambito globale.

window.myvar = 123123; 

In effetti, se non si è avvolto il codice in un closure allora si può semplicemente fare:

var myvar = "some value"; 
+0

thx, ma intendo trovare dove è impostata la finestra nel codice sorgente di mozilla. – user1108486

Problemi correlati