Javascript'te pencere, ekran ve belge arasındaki fark nedir?


244

Bu terimlerin, DOM için küresel ortam olarak birbirinin yerine kullanıldığını görüyorum. Fark nedir (eğer varsa) ve her birini ne zaman kullanmalıyım?

Yanıtlar:


250

Windowana JavaScript nesne kökü, yani global objecttarayıcıda, belge nesne modelinin kökü olarak da ele alınabilir. Buna şu şekilde erişebilirsiniz:window

window.screenya da sadece screenfiziksel ekran boyutları hakkında küçük bir bilgi nesnesidir.

window.documentya da sadece documentpotansiyel olarak görünür (ya da daha iyisi: işlenmiş) belge nesne modeli / DOM'un ana nesnesidir.

Yana windowküresel nesnedir sadece mülk adıyla hiçbirini özelliklerine başvurabilir - Sen yazmak zorunda kalmamak için window.- bu çalışma zamanı tarafından anladım edilecektir.


46
Bir belge bir pencereden daha büyük olabilir - pencere tarayıcınızın "görünür" kısmıdır.
Mandy

1
@ Belgenin bir parçası değilse bir html öğesini görünmez. iframe'i belgeye
ekleyene

27
@Mandy gelen açıklama karıştırır windowile viewport . A window, tarayıcı sekmesi için JavaScript nesnesidir veya <iframe>(veya kullanımdan kaldırılmıştır <frame>). Görünüm verilen dikdörtgen olan documentsekme ya da çerçeve içinde görülür.
Bennett Brown

2
window.document veya belge her zaman aynı mı?
BOZ

2
pencere global nesne olduğundan - her özelliğine / yöntemine [window.] yazmadan erişilebilir, böylece window.document sadece belge olarak yazılabilir ve tabii ki aynı şeyi işaret eder - özelliğin kendisi ile aynı sadece birden çok yol başvurulan.
Peter Aron Zentai

102

Pencereyi tarayıcıya yükleyen ilk şey. Bu pencere nesnesi, length, innerWidth, innerHeight, name, kapatılmışsa, ebeveynleri ve daha fazlası gibi özelliklerin çoğuna sahiptir.

O zaman belge nesnesi ne olacak? Belge nesnesi, tarayıcıya yüklenecek olan html, aspx, php veya başka bir belgedir. Belge aslında pencere nesnesinin içine yüklenir ve başlık, URL, çerez vb. Gibi özellikleri vardır. Bu gerçekten ne anlama geliyor? Bu, pencere için bir özelliğe erişmek istiyorsanız, window.property, belge ise window.document.property olduğu anlamına gelir ve bu da document.property olarak kısaca kullanılabilir.

dom

Bu yeterince basit görünüyor. Ancak bir IFRAME piyasaya sürüldüğünde ne olur?

iframe


14
Temel bilgileri öğrenmeye çalışan biri için yanıltıcı: "Belge nesnesi html, aspx, php veya tarayıcıya yüklenecek başka bir belgedir." Tarayıcı HTML ve CSS oluşturur ve JavaScript çalıştırır. PHP gibi sunucu tarafı dilleri olan dosyalar tarayıcı tarafından görülmez.
Bennett Brown

Bu gerçekten yararlı bir açıklama ve daha iyi anlamak için resim takip ..
Faris Rayhan

49

Kısaca, aşağıda daha ayrıntılı olarak,

  • window bu bağlamın JavaScript'i için yürütme içeriği ve genel nesne
  • document HTML ayrıştırılarak başlatılan DOM içeriyor
  • screen fiziksel ekranın tam ekranını açıklar

Bu nesnelerle ilgili ayrıntılar için W3C ve Mozilla referanslarına bakın . Bu üçü arasındaki en temel ilişki, her tarayıcı sekmesinin kendine windowve windowsahip window.documentve window.screenözelliklerine sahip olmasıdır. Tarayıcı sekmesi en windowböylece küresel bağlamdır documentve screenbakın window.documentve window.screen. Üç nesne hakkında daha fazla ayrıntı aşağıda, Flanagan'ın JavaScript'ini izliyor: Kesin Kılavuz .

window

Her tarayıcı sekmesinin kendi üst düzey windownesnesi vardır. Her <iframe>(ve kullanımdan kaldırılmış <frame>) öğenin, windowüst pencerede yuvalanmış kendi nesnesi de vardır. Bu pencerelerin her biri kendi ayrı küresel nesnesini alır. window.windowHer zaman ifade eder window, ancak window.parentve window.toppencereleri çevreleyen diğer yürütme bağlamlarda erişim sağlayan başvurabilir. Aşağıda documentve bunlara ek olarak screen, windowözellikler şunları içerir:

  • setTimeout()ve setInterval()olay işleyicilerini bir zamanlayıcıya bağlama
  • location geçerli URL'yi vermek
  • historyyöntemlerle back()ve forward()sekmenin değiştirilebilir geçmişini verme
  • navigator tarayıcı yazılımını tanımlama

document

Her windownesnenin documentoluşturulacak bir nesnesi vardır . Benzersiz bir kimlik atandığında genel nesneye HTML öğeleri eklendiğinden bu nesneler kısmen karışır. Örneğin, HTML snippet'inde

<body>
  <p id="holyCow"> This is the first paragraph.</p>
</body>

paragraf öğesine aşağıdakilerden herhangi biri tarafından başvurulabilir:

  • window.holyCow veya window["holyCow"]
  • document.getElementById("holyCow")
  • document.body.firstChild
  • document.body.children[0]

screen

windowNesne aynı zamanda bir yer alır screen, fiziksel görüntü açıklayan özelliklere sahip bir nesne:

  • ekran özellikleri widthve heighttam ekran

  • ekran özelliklerini seçin availWidthve availHeightaraç çubuğunu atlayın

Ekranın görüntülenen belgeyi görüntüleyen kısmı, işletim sistemiyle etkileşimler hakkında konuşurken bir uygulamanın ekranın bir bölümünü pencere olarak adlandırdığımız için potansiyel olarak kafa karıştırıcı olduğu için JavaScript'teki görünüm alanıdır. getBoundingClientRect()Herhangi birine göre yöntem documentelemanı ile bir nesne döndürür top, left, bottomve rightgörünüm elemanın konumunu tanımlayan özellikleri.


window.onloadbelge nesnesini kullanmaya eşdeğer bir talimat var mı?
FilipeCanatto


48

windowGerçek küresel nesnedir.

screenO kullanıcının ekranında ilgili özelliklerini içeren, ekranıdır.

documentDOM nerede olduğunu.


11
documentayrıca olabilir window.document, screenolabilir window.screenve windowolabilir window.window(veya window.window.window) :-P
Rocket Hazmat

6
@PeterAronZentai: Çünkü windowglobal bir değişken, bu onu global windownesnenin bir özelliği haline getiriyor . :-)
Rocket Hazmat

1
Ajax tarafından yeni bir sayfa açmak gerekir, tüm geçerli sayfayı yenisiyle değiştirmek istiyorum. $ (Document) .load (sayfa); veya $ (pencere) .load (sayfa); ?
Martin AJ

11

windowArayabileceğin böylece, her şeyi içerir window.screenve window.documentbu öğeleri alır. Her bir nesnenin içeriğini güzel bir şekilde bastırarak bu kemanı kontrol edin: http://jsfiddle.net/JKirchartz/82rZu/

Ayrıca nesnenin içeriğini kundakçı / dev araçlarında şöyle görebilirsiniz:

console.dir(window);
console.dir(document);
console.dir(screen);

windowher şeyin köküdür, screensadece ekran boyutlarına sahiptir ve documenten iyi DOM nesnesidir. bu yüzden windowbir süper gibi düşünebilirsiniz document...


1

Pencere , tarayıcıya ilk yüklenen şeydir. Bu pencere nesnesi, length, innerWidth, innerHeight, name, kapatılmışsa, ebeveynleri ve daha fazlası gibi özelliklerin çoğuna sahiptir.

Belge nesnesi, tarayıcıya yüklenecek olan html, aspx, php veya başka bir belgedir. Belge aslında pencere nesnesinin içine yüklenir ve başlık, URL, çerez vb. Gibi özellikleri vardır. Bu gerçekten ne anlama geliyor? Bu, pencere için bir özelliğe erişmek istiyorsanız, window.property, belge ise window.document.property olduğu anlamına gelir ve bu da document.property olarak kısaca kullanılabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.