从 iframe 操作重定向父窗口

IT技术 javascript iframe dhtml
2021-02-05 23:30:32

我需要使用什么 JavaScript 从 iframe 重定向父窗口?

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

6个回答
window.top.location.href = "http://www.example.com"; 

将重定向最顶层的父 iframe。

window.parent.location.href = "http://www.example.com"; 

将重定向父 iframe。

我不认为同源政策在这里适用。您应该能够将您的网站从其他人的 iframe 中分离出来,这是有道理的。
2021-03-24 23:30:32
在 Chrome 中,@Parris jsfiddle 会抛出此错误:Unsafe JavaScript 尝试URL 为“ parrisstudios.com/tests/iframe_redirect.html ”的框架中启动 URL 为“ jsfiddle.net/ppkzS ”的框架的导航尝试导航顶级窗口的框架被沙盒化,但未设置“允许顶部导航”标志。
2021-03-26 23:30:32
@BjarteAuneOlsen 有趣,可能是最近 chrome 或 webkit 的变化。它以前肯定有效。已经有几年了:)。答案也用于说明应用了同源策略,这以前使答案不正确,但现在使它正确并且我的评论错误-_-。
2021-03-27 23:30:32
@BjarteAuneOlsen - 我相信这是因为 JSFiddle 上的 Iframe 被故意沙盒化,因此它们明确拒绝了某些功能(例如重定向等) - 存在使用 JS 导航离开 JS Fiddle 并丢失工作的危险。 ..
2021-04-06 23:30:32
人们在这里遇到的错误是因为 iframe 的新 HTML5 属性称为“ sandbox” - developer.mozilla.org/en-US/docs/Web/HTML/Element/iframesandbox属性阻止 javascript 在基于 iframe 的内部执行某些操作在给定的允许操作的白名单上。allow-top-navigation属性是您可以在白名单中启用的操作之一,它允许此代码工作。如果该sandbox属性不存在,则允许所有操作。如果它存在且为空字符串,则拒绝所有操作。
2021-04-06 23:30:32

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

如此简单和优雅。像魅力一样工作:)
2021-03-18 23:30:32
我同意这是最好的解决方案,但 OP 专门要求使用 javascript。另一方面,OP 指定它应该通过锚点触发 - 我看不到一种情况,即人们会被迫使用锚点标签中的 javascript 来实现所需的结果,因此这个问题具有误导性。
2021-03-24 23:30:32
虽然所选答案是正确的,但我认为这是针对问题意图的更好答案。此外,它也适用于禁用 JS 的人。
2021-03-27 23:30:32
我需要从子 iframe 重定向父 iframe。尝试过 _parent 但它在 Firefox 中不起作用。
2021-04-05 23:30:32
window.top.location.href = "http://example.com";

window.top 指的是位于框架层次结构顶部的页面的窗口对象。

window.top.location.href 属性无法从 Iframe 更新,它会引发访问拒绝执行。只有在本地主机上测试时才能执行
2021-03-12 23:30:32
我怀疑一些怀疑者可能已经在 iframe 中尝试过这样的事情:window.top.location.href = window.top.location.href ;
2021-03-14 23:30:32
很棒的 jsfiddle @Parris,这为我解决了:)
2021-03-20 23:30:32
@Ummar:我想补充一点,当 iframe 的父级和 iframe 具有相同的域、相同的端口(相同的源策略)时,它会在它们不同时抛出拒绝访问异常,以防止安全漏洞
2021-03-30 23:30:32
@Ummar 这不是真的,jsfiddle.net/ppkzS为证。您可以更改 window.top.location.href。你就是读不懂。在铬中工作。
2021-03-31 23:30:32

target="_parent"对我很有用。轻松无忧!

这些似乎很好用。使用这种方法而不是 Javascript 有什么缺点吗?
2021-03-26 23:30:32
从来没听说过。如果你发现了什么,请分享。
2021-04-01 23:30:32

或者替代方案如下(使用文档对象)

parent.document.location.href = "http://example.com";
该解决方案是特定于 Firefox 的。人们应该只使用parent.location.href = .... developer.mozilla.org/en/document.location
2021-04-06 23:30:32
解决方案对我不起作用。Windows 10 中的 Chrome 显示“重定向被阻止”。如果用户不允许,此解决方案将不起作用
2021-04-07 23:30:32