从iframe操作重定向父窗口

Cli*_*ote 304 javascript iframe dhtml

我需要使用哪些JavaScript来从iframe重定向父窗口?

我希望他们单击​​一个超链接,使用JavaScript或任何其他方法,将超级父窗口重定向到新的URL.

MIP*_*MIP 496

window.top.location.href = "http://www.example.com"; 
Run Code Online (Sandbox Code Playgroud)

如前所述,将重定向父iframe.

  • 人们在这里遇到的错误是因为iframe的新HTML5属性被称为"`sandbox`" - https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe`sandbox`属性可防止javascript根据允许操作的给定白名单在iframe中执行某些操作."allow-top-navigation"属性是您可以在白名单中启用的操作之一,它允许此代码工作.如果`sandbox`属性是abscent,则允许所有操作.如果它存在且为空字符串,则拒绝所有操作. (7认同)
  • 在 Chrome 中,@Parris jsfiddle 抛出此错误:不安全的 JavaScript 尝试从 URL 为“http://www.parrisstudios.com/tests/iframe_redirect”的框架启动 URL 为“http://jsfiddle.net/ppkzS/”的框架的导航.html'。尝试导航顶级窗口的框架已被沙箱化,但未设置“allow-top-navigation”标志。 (4认同)
  • @BjarteAuneOlsen - 我相信这是因为JSFiddle上的iframe故意[沙盒](http://caniuse.com/#feat=iframe-sandbox)所以他们明确拒绝了某些功能(例如重定向等) - 有一个你使用JS导航远离JS Fiddle而失去工作的危险...... (4认同)
  • 我不认为同源政策在这里适用。您应该能够将您的网站从其他人的 iframe 中分离出来,这是有道理的。 (2认同)

Cli*_*ote 109

我发现它<a href="..." target="_top">link</a>也有效

  • 虽然选择的答案是正确的,但我认为这是问题意图的更好答案.此外,它将适用于已禁用JS的人员. (7认同)
  • 在asp.net中为我工作 (2认同)
  • 如此简单而优雅.像魅力:) (2认同)

Luc*_*eis 53

window.top.location.href = "http://example.com";
Run Code Online (Sandbox Code Playgroud)

window.top 指的是帧层次结构顶部页面的窗口对象.

  • window.top.location.href属性无法从Iframe更新,它会抛出访问被拒绝的execption.它只能在localhost上测试时执行 (8认同)
  • @Ummar不是真的,http://jsfiddle.net/ppkzS/是为了证明.您可以更改window.top.location.href.你无法阅读它.适用于镀铬. (5认同)
  • @Ummar:我想补充一点,当父iframe具有相同的域,相同的端口(相同的源策略),它会在它们不同时抛出访问被拒绝的异常,以防止安全漏洞 (3认同)
  • 我怀疑有些怀疑者可能在iframe中尝试了类似的东西:**window.top.location.href = window.top.location.href**; (2认同)

Rea*_*ed. 15

或者替代是以下(使用文档对象)

parent.document.location.href = "http://example.com";
Run Code Online (Sandbox Code Playgroud)

  • 该解决方案是针对Firefox的.一个人应该使用`parent.location.href = ...`.https://developer.mozilla.org/en/document.location (5认同)

rDr*_*oid 12

target="_parent"对我来说很棒.轻松无忧!


小智 7

@MIP是正确的,但是对于较新版本的Safari,您需要添加沙箱属性(HTML5)以提供对iFrame的重定向访问.可以通过它们之间的空格添加一些特定值.

参考(您需要滚动):https: //developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

例如:

<iframe sandbox="allow-top-navigation" src="http://google.com/"></iframe>
Run Code Online (Sandbox Code Playgroud)