2012-03-23 6 views
5

나는 상단 프레임 찾기 위해 다음 프레임 계층 구조를 통해 통과하고, 시도했다 : 지금까지왜 "window = 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인지 확인해야합니다. 그렇지 않으면 무한 루프가 발생합니다. 부모가 없으면 부모 속성이 자신을 참조합니다 (무한 루프).

http://jsfiddle.net/EZfHf/

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

나는 MDN에서 이걸 발견 : 창 부모가없는

경우, 부모 속성 자체에 대한 참조 이다. MDN에

링크 :

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

2

top의 부모가 자체입니다.

top == top.parent //true 
관련 문제