【发布时间】:2023-04-09 12:52:01
【问题描述】:
我想知道,有没有办法覆盖 iframe 的 window.top 和 window.parent 使得从它的上下文来看,以下是正确的
window === window.parent && window === window.top
情况是我想嵌入到 iframe 中的应用程序有许多对 window.top 的引用,它存储对象并使用它们与自己的子 iframe 来回通信。
<iframe sandbox=""></iframe>
没有“允许脚本”对我来说不是一个选项,因为对 window.top 的任何访问都会引发和错误,而我希望事情就像 iframe 是顶级窗口一样工作
注意: 我看到一个类似的问题被问到How to Trick/Fool an Iframe to thinking its the TOP element in DOM,但是虽然有同样的要求,但实际的问题 - 改变 top.location 可以解决,这就是我猜讨论被终止的原因。
【问题讨论】:
-
可能很天真,但在 iframe 中运行
window.top=window;会起作用吗? -
我建议不要欺骗系统,如果您需要在有专利窗口和没有专利窗口的情况下重复使用相同的代码,请将它们全部替换为一个变量并将其设置为您想要的那个每次。
-
找到了一些可能有帮助的东西(如果有,请告诉我):github.com/atom/electron/issues/656#issuecomment-57743689
-
感谢提示@dandavis 设置 window.top=window 不起作用,因为 top 是只读的 (w3schools.com/jsref/prop_win_top.asp) 所以它没有效果
-
@LGSon 不幸的是,修改代码不是一种选择,因为它是我无法控制的第 3 方应用程序。同样使用沙盒选项,iframe 仍然可以使用 window.top 访问最顶层的窗口,它不允许从 iframe 导航
标签: javascript html iframe