作者:ifx0448363 | 2023-08-30 11:52
我需要使用哪些JavaScript来从iframe重定向父窗口?
我希望他们单击一个超链接,使用JavaScript或任何其他方法,将超级父窗口重定向到新的URL.
1> 小智..:
window.top.location.href = "http://www.example.com";
如前所述,将重定向父iframe.
人们在这里遇到的错误是因为iframe的新HTML5属性被称为"`sandbox`" - https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe`sandbox`属性可防止javascript根据允许操作的给定白名单在iframe中执行某些操作."allow-top-navigation"属性是您可以在白名单中启用的操作之一,它允许此代码工作.如果`sandbox`属性是abscent,则允许所有操作.如果它存在且为空字符串,则拒绝所有操作.
@BjarteAuneOlsen - 我相信这是因为JSFiddle上的iframe故意[沙盒](http://caniuse.com/#feat=iframe-sandbox)所以他们明确拒绝了某些功能(例如重定向等) - 有一个你使用JS导航远离JS Fiddle而失去工作的危险......
2> Click Upvote..:
我发现它link
也有效
虽然选择的答案是正确的,但我认为这是问题意图的更好答案.此外,它将适用于已禁用JS的人员.
在asp.net中为我工作
如此简单而优雅.像魅力:)
3> Luca Matteis..:
window.top.location.href = "http://example.com";
window.top
指的是帧层次结构顶部页面的窗口对象.
window.top.location.href属性无法从Iframe更新,它会抛出访问被拒绝的execption.它只能在localhost上测试时执行
@Ummar不是真的,http://jsfiddle.net/ppkzS/是为了证明.您可以更改window.top.location.href.你无法阅读它.适用于镀铬.
@Ummar:我想补充一点,当父iframe具有相同的域,相同的端口(相同的源策略),它会在它们不同时抛出访问被拒绝的异常,以防止安全漏洞
我怀疑有些怀疑者可能在iframe中尝试了类似的东西:**window.top.location.href = window.top.location.href**;
4> Real Red...:
或者替代是以下(使用文档对象)
parent.document.location.href = "http://example.com";
该解决方案是针对Firefox的.一个人应该使用`parent.location.href = ...`.https://developer.mozilla.org/en/document.location
5> rDroid..:
target="_parent"
对我来说很棒.轻松无忧!
6> 小智..:
@MIP是正确的,但是对于较新版本的Safari,您需要添加沙箱属性(HTML5)以提供对iFrame的重定向访问.可以通过它们之间的空格添加一些特定值.
参考(您需要滚动):https:
//developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
例如: