如何强制从iframe中的链接在父窗口中打开


Answers:


617

我发现最好的解决方案是使用base标签。将以下内容添加到iframe页面的顶部:

<base target="_parent">

这将在父窗口中加载页面上的所有链接。如果要在新窗口中加载链接,请使用:

<base target="_blank">

所有浏览器均完全支持此标记。


4
票价如何跨浏览器?
Charlie Schliesser 2012年

3
@Wilf我不太正确:;)<base target>应该在any之前<a href>,因为它为以下链接设置了默认浏览上下文;<base href>应该在任何URL引用(<* href> <* src> <form action> <object data>…)之前出现,因为它设置了解析相对URL所依据的基本URL。
萨姆(Sam)2014年

5
为什么我回答一年用完全相同的答案回答这个问题?但是你被选中了 这太奇怪了。
vsync

5
我认为这是因为您的答案会在新窗口中打开链接,而我的答案是在iframe的父窗口中打开链接的,这是原始问题。对不起,偷了你的雷声!
克里斯·瓦塞利

1
请注意,<base根据w3.org/TR/html5/document-metadata#the-base-element规范,该标签没有关闭,因此应为<base target="_parent" >
Mark Schultheiss

147

使用目标属性:

<a target="_parent" href="http://url.org">link</a>

1
我尝试这样做,在新窗口中打开
Haim Evgi 09年

3
从我+1开始,基本target =“ _ parent”可以工作,但是target =“ _ parent”从未对我失败!

7
<base target="_blank">可以,但是这里的问题是关于一个链接的,而不是关于更改iframe上所有链接的行为的。对我来说,这是正确的答案。
kriskodzi

34

使用JavaScript:

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

28

您可以使用任何选项

如果只有父页面:

如果要打开到父页面或父iframe的所有链接,则可以在iframe的开头部分使用以下代码:

<base target="_parent" />

要么

如果您想打开到父页面或父iframe 的特定链接,则可以使用以下方式:

<a target="_parent" href="http://specific.org">specific Link</a>
<a  href="http://normal.org">Normal Link</a>

要么

如果是嵌套的iframe:

如果要打开浏览器窗口中的所有链接(在浏览器URL中重定向),则可以在iframe的开头部分使用以下代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
    $(window).load(function(){
        $("a").click(function(){
            top.window.location.href=$(this).attr("href");
            return true;
        })
    })
</script>

要么

如果要在浏览器窗口中打开特定链接(在浏览器URL中重定向),则可以使用以下方式:

<a  href="http://specific.org"   target="_top" >specific Link</a>

要么

<a  href="javascript:top.window.location.href='your_link'">specific Link</a>
<a  href="javascript:top.window.location.href='http://specific.org'">specific Link</a>
<a  href="http://normal.org">Normal Link</a>

1
好的答案,我只需要为特定链接使用它,但是可接受的答案仅描述了如何更改页面上所有链接的目标。谢谢
dading84 '17

15

有一个HTML元素base,它允许您执行以下操作:

为页面上的所有链接指定默认URL和默认目标:

<base target="_blank" />

通过指定,_blank请确保iframe内部的所有链接都将在外部打开。


这是在嵌套iframe中继承的吗?
beppe9000


7

尝试target="_parent" 属性里面anchor tag


我尝试这样做,在新窗口中打开
Haim Evgi 09年

4
尝试target =“ _ top”。该iframe可能包含嵌套的iframe?还是通过onclick事件中的javascript打开了实际链接?

5

如果您在网页中使用iframe,则在通过iframe中的HTML超链接(anchor标记)更改整个页面时,可能会遇到问题。有两种解决方案可以缓解此问题。

解决方案1.您可以使用以下示例中给出的锚标记的target属性。

<a target="_parent" href="http://www.kriblog.com">link</a>

解决方案2。您还可以使用JavaScript从iframe在父窗口中打开新页面。

<a href="#" onclick="window.parent.location.href='http://www.kriblog.com';">

请记住,⇒ target="_parent"在XHTML中已被弃用,但在HTML 5.x中仍支持。

可以从以下链接http://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.html中阅读更多内容


4

最通用,最跨浏览器的解决方案是避免使用“ base”标签,而使用“ a”标签的target属性:

<a target="_parent" href="http://www.stackoverflow.com">Stack Overflow</a>

<base>标签的通用性较差,浏览器对其在文档中的位置要求不一致,需要进行更多的跨浏览器测试。根据您的项目和情况,要实现<base>标签的理想跨浏览器放置可能很困难,甚至完全不可行。

使用标记的target="_parent"属性执行此操作<a>不仅对浏览器更友好,而且还使您可以区分要在iframe中打开的那些链接和要在父级中打开的那些链接。


3

<a target="parent">将在新标签页/窗口中<a target="_parent">打开链接... 将在父窗口/当前窗口中打开链接,而无需打开新标签页/窗口。不要忘了得分!


2

是的,我发现了

<base target="_parent" />

这对于打开所有在iframe中打开的iframe链接很有用。

$(window).load(function(){
    $("a").click(function(){
        top.window.location.href=$(this).attr("href");
        return true;
    })
})

我们可以将其用于整个页面或页面的特定部分。

感谢你的帮助。



0
   <script type="text/javascript"> // if site open in iframe then redirect to main site
        $(function(){
             if(window.top.location != window.self.location)
             {
                top.window.location.href = window.self.location;
             }
        });
    </script>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.