所以我知道,如果我将iFrame包含在不在同一个域中的页面上,我就无法通过浏览器策略访问iframe的DOM,但iframe中的页面是否可以访问任何类型的父文档?
具体来说,我必须考虑这个问题:
>如果嵌入页面可以告诉它不是父窗口,那么可以创建任何非iframe的站点,这样如果页面检测到它是iframed,它将变为“Go Away”页面,或者你可以制作它only-iframe-able(类似于服务器端脚本,仅适用于包含的页面),因此在没有iframed的情况下进入页面会获得“Go Away”页面.
>如果iframed页面具有父窗口没有的某些自由,它可以请求父窗口的样式表并将其设置为样式表上的样式表,从而使站点与父文档集成更多. (当然,那么我可以让我的样式表更多地与iframed网站相关,知道它会做到这一点,但我不认为这是一个问题).
有人知道吗?
解决方法
关于#1,是的,您可以使用一些简单的
javascript判断您是否正在构建框架:
<script type="text/javascript"> if (self != top) { // Framed! } </script>
关于#2,我不确定你可以使用“顶部”变量做什么,但我知道你可以改变它的位置(所以如果你的网站被另一个网站框起,你可以让你的框架改变位置顶部框架 – 基本上将用户直接重定向到您的网站).
不知道你可以或不能对顶部框架做什么 – 其他人可能能够在那里提供更多信息.