【问题标题】:count number of levels of iframe nesting in cross-site situation计算跨站点情况下 iframe 嵌套的层数
【发布时间】:2011-02-04 17:02:27
【问题描述】:

如果我的页面被深埋了几个 iframe,是否可以计算我向下的层数(跨域)?

(我很确定答案是否定的。)

【问题讨论】:

    标签: javascript iframe cross-domain


    【解决方案1】:

    不,我几乎可以肯定没有办法做到这一点。

    你可以试试

    var current = window;
    while (current.parent != current) {
        current = current.parent;
    }
    

    ,但我怀疑由于same origin policy,您会因多个域而失败。

    不过,可能值得一试。也许访问被阻止只访问文档内容,而不是窗口对象。

    【讨论】:

    • 我对@9​​87654323@ 进行了类似的测试,这会导致无限循环,因为'top` 和window.parent 是'undefined`。
    • @sprugman window.top 和 window.parent 不是 undefined - 它们只是与父对象相同的对象,如果不存在“真正的”父对象,top 将指向 window 对象。
    • 从现在开始,您可以确定 - 正如您所说,由于 SOP,绝对无法获得此信息。
    【解决方案2】:

    这不是关卡的数量,但通过这种方式,您似乎可以识别您的内容是否被 iframe 多次:

    if (parent !== window) {
        //I'm iframed once for sure 
    }
    if (parent !== top) {
        //I'm iframed more than once
    }
    

    通过 Chrome 59、Safari 10、Firefox 54、Edge 15、IE11 测试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      相关资源
      最近更新 更多