我正在遍历框架层次结构,并尝试以下方法来查找顶部框架:
var win = window;
while (win.parent) {
//perform actions on win
win = win.parent;
}
到目前为止,我知道正确的循环条件必须是:
while (win !== top) {
win.parent
上的存在检查似乎创造了一个无限循环。这有什么特别的原因吗?为什么top
有父母?
答案 0 :(得分:5)
您还应该检查window.parent == window
是否false
,否则您将无限循环。如果父属性没有父将引用它(无限循环),则为Couse。
var win = window;
while (win.parent && win.parent != win) {
//perform actions on win
win = win.parent;
}
我在MDN上发现了这个:
如果窗口没有父窗口,则其父属性是引用 对自己。
链接到MDN:
答案 1 :(得分:2)
top
的父母本身就是。
top == top.parent //true