代码之家  ›  专栏  ›  技术社区  ›  Dror Big McLargeHuge

在IE Mobile中从iframe中的脚本访问父级的dom

  •  1
  • Dror Big McLargeHuge  · 技术社区  · 15 年前

    我有一个框架窗口(当前是i frame,但可能是框架)-我不能控制这个。

    我想检测我的内容是否在i frame(或框架)中。

    我想将当前文档的位置与top对象所保存的位置进行比较,但它似乎是同一个对象(top==window)。
    在大量的谷歌搜索之后,我找到了这个 IEMobile blog entry 其中一条评论中有这样的答案:

    iMeBoLoc说:

    不,您不能访问 iframe中脚本中父级的dom 在IE移动中。
    2007年12月20日下午12:12

    我似乎找不到任何关于这方面的文档-有人能帮助确认这一点或更好-建议一种方法来检测页面是否是“框架”?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Guss    15 年前

    主要的问题是,如果帧来自不同的域,那么容器就是沙盒,不能访问其他帧/容器。

    你能做的就是试着比较 window window.top 可能的结果是: 1。是相同的->您是页面的顶部窗口 2。它们不相同->您不是页面的顶部窗口,在同一域中有一些容器页面将窗口作为框架或iframe保存。 三。引发了安全异常->您不是页面的顶部窗口,但顶部窗口来自另一个域,您无法访问它。

    可能是这样的:

    try {
      if (window == window.top)
        return "I'm parent";
      else
        return "I'm a child of " + window.top.location;
    } catch (e) {
      return "I'm a child of something from another domain";
    }
    
        2
  •  2
  •   Dror Big McLargeHuge    15 年前

    因为我在发现留言后没有找到任何地方 IE Mobile blog (由IE移动团队的项目经理Charles Morris在他自己的岗位上)我不得不添加此答案并声明:

    按设计(或至少是一个bug)

    中华人民共和国说 :

    关于iframe支持:我可以 创建iframe,但无法 “看外面”的框架。顶部“和” “父母”似乎都只指 iframe本身不是最顶级的 祖先或直系祖先 文件建议应该这样做。 有没有一种引用javascript的方法 封闭文档中的变量 从一个iframe中?

    2007年12月19日晚上9:29

    伊姆博洛克说 :

    不,您不能访问 iframe中脚本中父级的dom 在IE移动中。

    2007年12月20日12:12 颗粒物