2011-12-20 5 views
5

Czytam kod źródłowy Firefoksa i chciałbym wiedzieć, jak utworzyć niektóre funkcje globalne.gdzie jest obiekt "okna" zdefiniowany lub utworzony w kodzie źródłowym firefox

Nie mogę znaleźć miejsca, w którym tworzony jest obiekt okna lub jak definiować niektóre obiekty globalne, do których mają dostęp skrypty.

Chciałbym wiedzieć, od czego zacząć lub przynajmniej gdzie obiekt okna jest zdefiniowany i utworzony, dzięki!

+2

Czy czytasz kod źródłowy firefox? lub kod źródłowy javascript? – Ibu

+0

kod źródłowy firefox. odczytaj kod źródłowy silnika javascript, nie ustawi on obiektu globalnego, musiał go gdzieś ustawić. – user1108486

Odpowiedz

2

Przedmiotem window jest najczęściej zdefiniowana w nsGlobalWindow.cpp. Publiczne metody/właściwości należą do nsIDOMWindow, nsIDOMJSWindow, nsIDOMEventTarget, nsIDOMStorageIndexedDB i kilku innych interfejsów (poszukaj makr NS_INTERFACE_MAP_ENTRY, ale nie wszystkie odnoszą się do publicznych interfejsów).

Dodatkowo, jak każdy obiekt DOM, może mieć właściwości expando (właściwości ustawione przez skrypt). Niektóre z tych właściwości expando są ustawiane automatycznie po utworzeniu opakowania DOM (klasa nsWindowSH). W szczególności komponenty implementujące nsIDOMGlobalPropertyInitializer mogą ustawiać właściwości na tym etapie lub komponenty nasłuchujące powiadomienia o content-document-global-created.

+0

dziękuję bardzo! to rozwiązało mój problem! i hiperłącze, jak miło z twojej strony. thx ~ – user1108486

+0

Natknąłem się na ten wątek, a teraz jestem ciekawy - w jaki sposób JavaScript, który wpisuję w moim tekście "

0

window jest obiektem globalnym.

Wszystko zdefiniowane z zakresu zostanie oddany do window


Więc jeśli nie (w zakresie globalnym):

var myVar = 123; 

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

dzięki za pomoc. ale chodzi mi o to, gdzie jest globalny obiekt "okna" zdefiniowany lub stworzony w kodzie źródłowym firefox. – user1108486

+0

@ user1108486 Nie będzie w kodzie firefox. ff używa silnika javascript. – Neal

+1

tak, ale przy użyciu javascript engin, należy ustawić obiekt globalny, który jest obiektem "okna". – user1108486

0

Czy ja naprawdę mis-rozumieć? Czy piszesz coś w JavaScript?

Jeśli tak, możesz dodać obiekt okna, po prostu deklarując zmienną w zasięgu globalnym.

window.myvar = 123123; 

Rzeczywiście, jeśli nie zostały owinięte kodu w closure następnie można po prostu zrobić:

var myvar = "some value"; 
+0

thx, ale mam na myśli znalezienie, gdzie okno jest ustawione w kodzie źródłowym mozilla. – user1108486

Powiązane problemy