1

我正在通过服务器上的代理将网站内容加载到 iframe 中。如果我在文件顶部添加这个 javascript,

var top = "";
var parent = "";

我可以成功地防止网站框架破坏。我怎样才能做到这一点并仍然访问父窗口中的功能,如下所示:

parent.my_function('this is called from inside the iframe');
4

2 回答 2

1

我完全不确定覆盖这些变量是否一定会阻止帧破坏,但如果它对你有用,大概访问parent你可以做这样的事情:

(function() {
    var oldParent = window.parent;

    window.parent = "";
    // ...
})();

...并oldParent在函数内访问。


另外,请注意

var window.top = "";

var window.parent = "";

...都是语法错误。您var用来声明变量,而不是命名对象的属性。

如果您在全局范围内,如果还没有,var top则会创建一个属性window,但如果已经有(并且有),则它是无操作的,并且该var部分被完全忽略(分配部分仍在处理中)。没有语法错误,你的四行归结为:

top = "";
parent = "";

或者

window.top = "";
window.parent = "";

top...如果并且parent存在于window(并且它们确实存在)上,它们是等价的。

于 2012-05-28T21:49:29.877 回答
1

我认为最简单的事情是将topparent值存储到您只知道的变量中。

例如:

window.__myTopWindow = window.top;
window.__myParentWindow = window.parent;
window.top = window.parent = null;

当然,我们可以遍历 window 对象来发现 Window 对象是什么属性。在这种情况下,您可能需要重新分配您的范围,或使用 Crowder 的解决方案。

于 2012-05-28T21:55:48.497 回答