有没有办法阻止iframe重定向父窗口,但是这样的方式“顶级”重定向仍然可以在iframe内部工作?

时间:2014-09-21 10:26:48

标签: javascript html iframe

所以我读过HTML5 sandbox property,我明白如果我想阻止iframe重定向其父窗口,我可以使用sandbox属性离开allow-top-navigation。但是,当这样做时,如果iframe最初依赖于顶级重定向,那么它所发生的是它重定向到空白页面,有效地破坏了导航。

我是否可以阻止iframe修改其父窗口,同时仍然允许“顶级”重定向,只允许这些在iframe的上下文中工作而不是顶级?

编辑:对于上下文,我正在与第三方合作,其网页上有一个目标为_top的表单。如果iframe是沙箱,则在提交表单时,用户会获得一个空白页面,如果沙箱,则会重定向整个页面。我正在寻找能够提交表单并在iframe中显示结果的内容。

2 个答案:

答案 0 :(得分:4)

使用 HTML5 ,添加了iframe sandbox属性。

在撰写此works on Chrome, Safari, Firefox and recent versions of IE and Opera时,您可以完成您想要的任务:

允许将iframe内容视为与包含文档

的来源相同
<iframe src="url" sandbox="allow-same-origin"></iframe>

浏览器兼容性 enter image description here


一些有用的链接

答案 1 :(得分:0)

您可以使用onbeforeunload属性并确定是否要重定向。

Here is the docs page for it

基本上我会尝试的是:

  • 制作一个功能,将沙箱属性与所有内容相加,只需将allow-top-navigation省略到iframe
  • 将函数绑定到iframe的onbeforeunload属性,该属性调用添加沙箱属性的函数(确保不会返回任何内容,因为会弹出一个对话框)

这应该有效,因为请求首先在iframe中生成,然后我们可以阻止它转移到我们的顶级窗口。

你应该检查的另一件事是你是否遗漏了allow-forms选项,这可能导致你所描述的内容。

如果有任何效果,请告诉我。