我正在通过服务器上的代理将网站内容加载到 iframe 中。如果我在文件顶部添加这个 javascript,
var top = "";
var parent = "";
我可以成功地防止网站框架破坏。我怎样才能做到这一点并仍然访问父窗口中的功能,如下所示:
parent.my_function('this is called from inside the iframe');
我正在通过服务器上的代理将网站内容加载到 iframe 中。如果我在文件顶部添加这个 javascript,
var top = "";
var parent = "";
我可以成功地防止网站框架破坏。我怎样才能做到这一点并仍然访问父窗口中的功能,如下所示:
parent.my_function('this is called from inside the iframe');
我完全不确定覆盖这些变量是否一定会阻止帧破坏,但如果它对你有用,大概访问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
(并且它们确实存在)上,它们是等价的。
我认为最简单的事情是将top
和parent
值存储到您只知道的变量中。
例如:
window.__myTopWindow = window.top;
window.__myParentWindow = window.parent;
window.top = window.parent = null;
当然,我们可以遍历 window 对象来发现 Window 对象是什么属性。在这种情况下,您可能需要重新分配您的范围,或使用 Crowder 的解决方案。