Tôi thấy các thuật ngữ này được sử dụng thay thế cho nhau như là môi trường toàn cầu cho DOM. Sự khác biệt (nếu có) và khi nào tôi nên sử dụng mỗi cái?
Tôi thấy các thuật ngữ này được sử dụng thay thế cho nhau như là môi trường toàn cầu cho DOM. Sự khác biệt (nếu có) và khi nào tôi nên sử dụng mỗi cái?
Câu trả lời:
Window
là gốc đối tượng JavaScript chính, còn gọi là global object
trong trình duyệt, cũng có thể được coi là gốc của mô hình đối tượng tài liệu. Bạn có thể truy cập nó nhưwindow
window.screen
hoặc chỉ screen
là một đối tượng thông tin nhỏ về kích thước màn hình vật lý.
window.document
hoặc chỉ document
là đối tượng chính của mô hình đối tượng tài liệu / DOM có khả năng hiển thị (hoặc tốt hơn: được hiển thị).
Vì window
là đối tượng toàn cầu, bạn có thể tham chiếu bất kỳ thuộc tính nào của nó chỉ bằng tên thuộc tính - vì vậy bạn không phải ghi lại window.
- nó sẽ được tìm ra bởi thời gian chạy.
window
với chế độ xem . A window
là đối tượng JavaScript cho tab trình duyệt hoặc <iframe>
(hoặc không dùng nữa <frame>
). Khung nhìn là hình chữ nhật của kết document
xuất được nhìn thấy trong tab hoặc khung.
Chà, cửa sổ là thứ đầu tiên được tải vào trình duyệt. Đối tượng cửa sổ này có phần lớn các thuộc tính như length, InternalWidth, InternalHeight, name, nếu nó đã bị đóng, cha mẹ của nó, v.v.
Thế còn đối tượng tài liệu thì sao? Đối tượng tài liệu là html, aspx, php hoặc tài liệu khác của bạn sẽ được tải vào trình duyệt. Tài liệu thực sự được tải bên trong đối tượng cửa sổ và có các thuộc tính có sẵn cho nó như tiêu đề, URL, cookie, v.v. Điều này thực sự có nghĩa là gì? Điều đó có nghĩa là nếu bạn muốn truy cập một thuộc tính cho cửa sổ thì đó là window.property, nếu đó là tài liệu thì đó là window.document.property, cũng có sẵn dưới dạng document.property.
Điều đó dường như đủ đơn giản. Nhưng điều gì xảy ra khi IFRAME được giới thiệu?
Tóm lại, với nhiều chi tiết dưới đây,
window
là bối cảnh thực hiện và đối tượng toàn cầu cho JavaScript của bối cảnh đódocument
chứa DOM, được khởi tạo bằng cách phân tích cú pháp HTMLscreen
mô tả toàn màn hình của màn hình vật lýXem tài liệu tham khảo W3C và Mozilla để biết chi tiết về các đối tượng này. Mối quan hệ cơ bản nhất giữa ba là mỗi tab trình duyệt có window
một thuộc tính riêng và window
có window.document
và window.screen
thuộc tính. Tab trình duyệt window
là bối cảnh toàn cầu, vì vậy document
, screen
tham khảo window.document
và window.screen
. Dưới đây là chi tiết về ba đối tượng, theo JavaScript của Flanagan: Hướng dẫn dứt khoát .
window
Mỗi tab trình duyệt có window
đối tượng cấp cao nhất của riêng nó . Mỗi phần tử <iframe>
(và không dùng nữa <frame>
) cũng có window
đối tượng riêng , được lồng trong cửa sổ cha. Mỗi cửa sổ này có đối tượng toàn cầu riêng. window.window
luôn luôn đề cập đến window
, nhưng window.parent
và window.top
có thể đề cập đến việc đóng các cửa sổ, cho phép truy cập vào các bối cảnh thực thi khác. Ngoài document
và screen
được mô tả dưới đây, window
các thuộc tính bao gồm
setTimeout()
và setInterval()
ràng buộc xử lý sự kiện với một bộ đếm thời gianlocation
đưa ra URL hiện tạihistory
với các phương thức back()
và forward()
đưa ra lịch sử có thể thay đổi của tabnavigator
mô tả phần mềm trình duyệtdocument
Mỗi window
đối tượng có một document
đối tượng được kết xuất. Các đối tượng này bị lẫn lộn một phần vì các phần tử HTML được thêm vào đối tượng toàn cục khi được gán một id duy nhất. Ví dụ: trong đoạn mã HTML
<body>
<p id="holyCow"> This is the first paragraph.</p>
</body>
phần tử đoạn có thể được tham chiếu bởi bất kỳ điều nào sau đây:
window.holyCow
hoặc là window["holyCow"]
document.getElementById("holyCow")
document.body.firstChild
document.body.children[0]
screen
Đối window
tượng cũng có một screen
đối tượng với các thuộc tính mô tả hiển thị vật lý:
thuộc tính màn hình width
và height
là toàn màn hình
thuộc tính màn hình availWidth
và availHeight
bỏ qua thanh công cụ
Phần màn hình hiển thị tài liệu được hiển thị là chế độ xem trong JavaScript, điều này có thể gây nhầm lẫn vì chúng tôi gọi một phần của ứng dụng là một cửa sổ khi nói về tương tác với hệ điều hành. Các getBoundingClientRect()
phương pháp của bất kỳ document
yếu tố sẽ trả về một đối tượng với top
, left
, bottom
, và right
các thuộc tính mô tả vị trí của phần tử trong viewport.
window.onload
sử dụng đối tượng tài liệu?
Đây window
là đối tượng toàn cầu thực tế.
Đây screen
là màn hình, nó chứa các thuộc tính về màn hình của người dùng.
Đây document
là nơi DOM là.
document
cũng có thể window.document
, screen
có thể window.screen
và window
có thể window.window
(hoặc window.window.window
) :-P
window
là một biến toàn cục, làm cho nó trở thành một tài sản của window
đối tượng toàn cầu . :-)
các window
chứa tất cả mọi thứ, vì vậy bạn có thể gọi window.screen
và window.document
để có được những yếu tố này. Kiểm tra câu đố này, in đẹp nội dung của từng đối tượng: http://jsfiddle.net/JKirchartz/82rZu/
Bạn cũng có thể thấy nội dung của đối tượng trong các công cụ firebird / dev như thế này:
console.dir(window);
console.dir(document);
console.dir(screen);
window
là gốc của mọi thứ, screen
chỉ có kích thước màn hình và document
là đối tượng DOM hàng đầu. vì vậy bạn có thể nghĩ nó window
giống như một document
...
Cửa sổ là thứ đầu tiên được tải vào trình duyệt. Đối tượng cửa sổ này có phần lớn các thuộc tính như length, InternalWidth, InternalHeight, name, nếu nó đã bị đóng, cha mẹ của nó, v.v.
Đối tượng tài liệu là html, aspx, php hoặc tài liệu khác của bạn sẽ được tải vào trình duyệt. Tài liệu thực sự được tải bên trong đối tượng cửa sổ và có các thuộc tính có sẵn cho nó như tiêu đề, URL, cookie, v.v. Điều này thực sự có nghĩa là gì? Điều đó có nghĩa là nếu bạn muốn truy cập một thuộc tính cho cửa sổ thì đó là window.property, nếu đó là tài liệu thì đó là window.document.property, cũng có sẵn dưới dạng document.property.