2012-03-23 15 views
5

मैं एक फ्रेम पदानुक्रम के माध्यम से traversing गया था, और करने की कोशिश की शीर्ष फ्रेम लगाने के लिए निम्नलिखित:क्यों "विंडो = window.parent;" एक अनंत पाश बनाएँ?

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

अब तक, मुझे पता है कि सही पाशन हालत में होना चाहिए:

while (win !== top) { 

अस्तित्व की जांच win.parent पर प्रतीत होता है कि एक अनंत लूप बनता है। क्या ऐसा कोई विशेष कारण है कि ऐसा क्यों है? top को माता-पिता क्यों होना चाहिए?

+0

क्या आपने यह जांचने की कोशिश की है कि 'top.parent' क्या है? –

+0

शायद यही है कि 'टॉप' कैसे ध्वजांकित किया गया है - हो सकता है कि शीर्ष फ्रेम स्वयं माता-पिता के रूप में हो? –

उत्तर

5

आपको यह भी जांचना चाहिए कि window.parent == window​false है और आप एक अनंत लूप के साथ समाप्त हो जाएंगे। अगर कोई माता-पिता नहीं है तो माता-पिता संपत्ति अपने आप को संदर्भित करेगी (अनंत लूप)।

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

http://jsfiddle.net/EZfHf/

मैं MDN पर इस पाया: एक खिड़की एक जनक नहीं है

हैं, तो अपनी मूल संपत्ति एक संदर्भ ही है।

MDN के लिए लिंक:

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

2

top के माता-पिता ही है।

top == top.parent //true 
संबंधित मुद्दे