2011-12-20 42 views
5

Tôi đang đọc mã nguồn Firefox và tôi muốn biết cách tạo một số chức năng toàn cục.đối tượng "cửa sổ" được xác định hoặc tạo trong mã nguồn firefox

Tôi không thể tìm thấy nơi đối tượng cửa sổ được tạo hoặc cách xác định một số đối tượng chung được truy cập bằng tập lệnh.

Tôi muốn biết bắt đầu từ đâu hoặc ít nhất là nơi đối tượng cửa sổ được xác định và tạo, cảm ơn!

+2

Bạn đang đọc mã nguồn firefox? hoặc mã nguồn javascript? – Ibu

+0

mã nguồn firefox. đọc mã nguồn của động cơ javascript, nó sẽ không thiết lập đối tượng toàn cục, nó phải được đặt ở đâu đó. – user1108486

Trả lời

2

Đối tượng window chủ yếu quy định tại nsGlobalWindow.cpp. Các phương thức/thuộc tính công khai thuộc về nsIDOMWindow, nsIDOMJSWindow, nsIDOMEventTarget, nsIDOMStorageIndexedDB và một số giao diện khác (tìm kiếm các macro NS_INTERFACE_MAP_ENTRY nhưng không phải tất cả chúng đều tham chiếu đến các giao diện công cộng).

Ngoài ra, như bất kỳ đối tượng DOM nào, nó có thể có thuộc tính expando (thuộc tính được đặt bởi tập lệnh). Một số thuộc tính expando được đặt tự động khi trình bao bọc DOM được tạo (lớp nsWindowSH). Cụ thể, các thành phần triển khai nsIDOMGlobalPropertyInitializer có thể đặt thuộc tính ở giai đoạn đó hoặc các thành phần nghe thông báo content-document-global-created.

+0

cảm ơn bạn rất nhiều! điều này đã giải quyết được vấn đề của tôi! và liên kết siêu đó, bạn thuộc loại nào. thx ~ – user1108486

+0

Tôi tình cờ gặp chủ đề này, và bây giờ tôi tò mò - làm thế nào để Javascript tôi gõ vào thẻ '

0

window là đối tượng chung.

Bất cứ điều gì định nghĩa ra khỏi một phạm vi sẽ được đưa vào window


Vì vậy, nếu bạn làm (trong phạm vi toàn cầu):

var myVar = 123; 

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

cảm ơn sự giúp đỡ của bạn. nhưng tôi có nghĩa là đối tượng "cửa sổ" toàn cầu được xác định hoặc được tạo trong mã nguồn firefox ở đâu. – user1108486

+0

@ user1108486 Nó sẽ không có trong mã firefox. ff đang sử dụng công cụ javascript. – Neal

+1

có, nhưng bằng cách sử dụng công cụ javascript, người ta phải thiết lập một đối tượng toàn cục là đối tượng "cửa sổ". – user1108486

0

Tôi có thực sự mis-hiểu? Bạn đang viết một cái gì đó trong JavaScript?

Nếu vậy bạn có thể nối thêm vào đối tượng cửa sổ đơn giản bằng cách khai báo một biến trong phạm vi toàn cục.

window.myvar = 123123; 

Thật vậy, nếu bạn chưa bọc mã của bạn trong một closure sau đó bạn có thể chỉ cần làm:

var myvar = "some value"; 
+0

thx, nhưng tôi có nghĩa là tìm nơi cửa sổ được đặt trong mã nguồn mozilla. – user1108486

Các vấn đề liên quan