2011-12-20 9 views
5

Estoy leyendo el código fuente de Firefox y me gustaría saber cómo crear algunas funciones globales.donde se define o crea el objeto "ventana" en el código fuente de firefox

no puedo encontrar donde se crea el objeto de la ventana o la forma de definir algunos objetos globales para ser accedidos por los scripts.

me gustaría saber por dónde empezar o al menos donde el objeto de la ventana está definido y creado, gracias!

+2

¿Estás leyendo el código fuente de Firefox? o un código fuente de JavaScript? – Ibu

+0

el código fuente de Firefox. lea el código fuente del motor de JavaScript, no configurará el objeto global, debe haberse configurado en algún lugar. – user1108486

Respuesta

2

El objeto window se define principalmente en nsGlobalWindow.cpp. Los métodos/propiedades públicos pertenecen a nsIDOMWindow, nsIDOMJSWindow, nsIDOMEventTarget, nsIDOMStorageIndexedDB y algunas otras interfaces (busque las macros NS_INTERFACE_MAP_ENTRY pero no todas se refieren a las interfaces públicas).

Además, como cualquier objeto DOM puede tener expando propiedades (propiedades establecidas por la escritura). Algunas de estas propiedades de expansión se establecen automáticamente cuando se crea el contenedor DOM (clase nsWindowSH). En particular, los componentes que implementan nsIDOMGlobalPropertyInitializer pueden establecer propiedades en esa etapa o los componentes que escuchan la notificación content-document-global-created.

+0

muchas gracias! ¡esto resolvió mi problema! y esos hiperenlaces, qué amable de tu parte. thx ~ – user1108486

+0

Me encontré con este hilo, y ahora tengo curiosidad - ¿cómo el Javascript que escribo en mi etiqueta '

0

window es el objeto global.

Cualquier cosa definida fuera de un ámbito de aplicación se pone en window


Así que si lo hace (en el ámbito global):

var myVar = 123; 

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

gracias por su ayuda. pero me refiero a dónde se define o crea el objeto global "ventana" en el código fuente de Firefox. – user1108486

+0

@ user1108486 No estaría en el código de Firefox. ff está usando un motor de JavaScript. – Neal

+1

sí, pero al usar el engin de javascript, se debe configurar un objeto global que sea el objeto "ventana". – user1108486

0

verdad he entendido mal-? ¿Estás escribiendo algo en JavaScript?

Si es así puede anexar al objeto de ventana simplemente declarando una variable en el ámbito global.

window.myvar = 123123; 

De hecho, si no se ha envuelto su código en un closure, entonces puede simplemente hacer:

var myvar = "some value"; 
+0

thx, pero me refiero a encontrar dónde se establece la ventana en el código fuente de mozilla. – user1108486

Cuestiones relacionadas