从iframe获取有关文档的信息?

时间:2011-11-16 20:02:33

标签: javascript

我注意到一些网站在外部域中构建框架时会重定向用户。

如何知道我的网站何时通过iframe加载?

我怎么知道包含它的网站的域名?

3 个答案:

答案 0 :(得分:0)

在javascript中查看framebreakers,这正是您正在寻找的。

以下是一些示例http://www.thesitewizard.com/archive/framebreak.shtml

答案 1 :(得分:0)

未经测试但应该有效:

if (self != top){
alert('FRAMED! URL = ' + top.location.href);
 top.location = self.location;
}

答案 2 :(得分:0)

如果您可以让iframe通过框架内的脚本告诉您自己,这是理想的选择。例如,它可以直接调用父函数来告诉它已经准备好了。跨框架代码执行始终需要小心,因为事情可能以您不期望的顺序发生。另一种方法是在自己的范围内设置'var isready = true;',并让父脚本嗅探'contentWindow.isready'(如果没有,则添加onload处理程序)。

如果出于某种原因让iframe文档合作是不切实际的,那么你就会遇到传统的加载竞争问题,即即使元素彼此相邻也是如此:

<img id="x" ... />
<script type="text/javascript">
    document.getElementById('x').onload= function() {
        ...
    };
</script>

无法保证在脚本执行时该项目尚未加载。

负载竞赛的方法是:

在IE上,您可以使用'readyState'属性来查看是否已经加载了某些东西; 如果只有启用JavaScript的项目可用,您可以动态创建它,在设置源和附加到页面之前设置'onload'事件功能。在这种情况下,在设置回调之前无法加载它; 老式的方式将它包含在标记中:

<img onload="callback(this)" ... />

HTML中的内联'onsomething'处理程序几乎总是错误的并且要避免,但在这种情况下,有时它是最不好的选择。