我有一个框架窗口(目前是iframe但可能是框架) - 我无法控制它。

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

我想比较当前文档的位置与顶层对象的位置,但它看起来是同一个对象(顶部===窗口)。
经过广泛的谷歌搜索后,我得到了这个 IEMobile博客条目和其中一条评论中有这样的答案:

  iemoblog说:

     

不,你无法访问的任何部分   来自iframe中脚本的父级DOM   在IE Mobile中。
  2007年12月20日下午12:12

我似乎无法找到任何关于此的文档 - 任何人都可以帮助确认这一点,甚至更好 - 建议一种方法来检测页面是否“框架”?

有帮助吗?

解决方案 2

因为在找到 IE移动博客(由IE移动团队的项目经理Charles Morris自己发帖)我被迫添加这个答案并说明是:

按设计(或至少是一个错误)

  

prc说

     

关于iframe支持:我可以   创建一个iframe,但我无法   “向外看”框架。 "顶"和   &QUOT亲本QUOT;两者似乎只是指   iframe本身而不是最顶层   祖先或直系祖先   文档表明它应该。   有没有办法引用javascript   封闭文件中的变量   来自iframe?

     

2007年12月19日下午9:29

     

iemoblog说

     

不,你无法访问的任何部分   来自iframe中脚本的父级DOM   在IE Mobile中。

     

2007年12月20日12:12   PM

其他提示

主要问题是,如果框架来自不同的域,那么容器然后您的JavaScript被沙箱化,无法访问其他框架/容器。

您可以尝试将 window window.top 进行比较,可能的结果是: 1.是相同的 - >你是页面上的首页 2.它们不一样 - >您不是页面上的顶部窗口,有一些容器页面,与您在同一个域中,将窗口保存为框架或iframe。 3.抛出安全异常 - >您不是页面上的顶部窗口,但顶部窗口来自另一个域,您无法访问它。

可能是这样的:

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";
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top