iframe页面可以告诉他们何时被iframed?

Ant*_*ony 7 iframe same-origin-policy

所以我知道,如果我将iFrame包含在不在同一个域中的页面上,我就无法通过浏览器策略访问iframe的DOM,但是iframe中的页面是否可以访问任何类型的父文档?

具体来说,我有一些想法取决于这个问题:

  1. 如果嵌入页面可以告诉它不是父窗口,那么可以创建任何非iframe的站点,这样如果页面检测到它是iframed,它将变为"Go Away"页面,或者你只能使它成为-iframe-able(类似于服务器端脚本,仅适用于包含的页面),因此在没有iframed的情况下进入页面会获得"Go Away"页面.

  2. 如果iframed页面具有父窗口没有的某些自由,它可以请求父窗口的样式表并将其设置为样式表上的样式表,从而使站点与父文档集成更多.(当然,然后我可以让我的样式表更多地与iframed网站相关,知道它会这样做,但我不认为这是一个问题).

有人知道吗?

Eri*_*lje 11

关于#1,是的,您可以使用一些简单的javascript判断您是否正在构建框架:

<script type="text/javascript">
if (self != top)
{
  // Framed!
}
</script>
Run Code Online (Sandbox Code Playgroud)

关于#2,我不确定你可以使用"顶部"变量做什么,但我知道你可以改变它的位置(所以如果你的网站被另一个网站框起,你可以让你的框架改变位置顶部框架 - 基本上将用户直接重定向到您的网站).

不知道你还能做什么或不能对顶部框架做什么 - 其他人可能能够在那里提供更多信息.

  • 我建议放弃脚本元素中的HTML注释,不再为Netscape 2提供服务. (2认同)