如何获得同一域中最顶层的iframe,即
iframe level 1 example.org
iframe level 2 example.org
iframe level 2 example.org
iframe level 3 example.org <-- should return iframe level 1
iframe level 1 other-example.org
iframe level 2 example.org
iframe level 2 example.org
iframe level 3 example.org <-- should return iframe level 2
iframe level 1 other-example.org
iframe level 2 example.org
iframe level 2 example.org <-- should return iframe level 2 (this)
Run Code Online (Sandbox Code Playgroud)
我需要它,因为我有一个网站应该在另一个域的iframe中工作并且独立.
在这个网站上有一些依赖于window.top的脚本,它不应该是顶层,而是同一域中最顶层的iframe.
如果您尝试访问父级并且它来自其他域,则会出现错误.您可以使用它来递归尝试访问父级,直到它失败,例如:
function getTopIframe(win) {
try {
return getTopIframe(win.parent);
} catch(e) {
return win;
}
}
Run Code Online (Sandbox Code Playgroud)
最顶层的窗口是它自己的父窗口,因此如果顶部窗口位于同一个域中,您需要检查它以防止永久循环:
function getTopIframe(win) {
try {
if (win.parent != win) {
return getTopIframe(win.parent);
}
} catch(e) {
}
return win;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1192 次 |
最近记录: |