2012-03-23 45 views
5

Ben üst çerçeveyi bulmak için aşağıdaki bir çerçeve hiyerarşisi yoluyla döndürmeyi ve yargılandı: ArtıkNeden "window = window.parent;" sonsuz bir döngü oluşturmak?

var win = window; 
while (win.parent) { 
    //perform actions on win 
    win = win.parent; 
} 

, ben doğru döngü koşulu olması gerektiğini biliyoruz:

while (win !== top) { 

mevcudiyet incelemesi win.parent, görünüşte sonsuz bir döngü oluşturur. Bunun böyle olmasının özel bir sebebi var mı? Neden top bir ebeveyne sahip olmalı?

+0

Top.parent' nedir? –

+0

Belki de 'top' işareti nasıl işaretlenir - belki de üst çerçevenin kendisi bir ebeveyn olarak var mı? –

cevap

5

Ayrıca window.parent == window​'un false bilişim olup olmadığını da kontrol etmelisiniz ki sonsuz bir döngü ile sonlanacaksınız. Ebeveyn yoksa, ebeveyn özelliği kendisine başvurur (sonsuz döngü).

http://jsfiddle.net/EZfHf/

var win = window; 
while (win.parent && win.parent != win) { 
    //perform actions on win 
    win = win.parent; 
}​ 

Ben MDN'yi bu bulundu: bir pencere üst öğesi yok

ise üst özelliği kendisine referans olduğunu. MDN'yi için

Bağlantı:

https://developer.mozilla.org/en/DOM/window.parent

2

top 'ın ana kendisidir.

top == top.parent //true 
İlgili konular