Как заставить ссылку из iframe открываться в родительском окне


359

Мне нужно открыть ссылку на той же родительской странице, а не открывать ее на новой странице.

примечание: iframeи родительская страница находятся в одном домене .


Ответы:


617

Я нашел лучшее решение было использовать базовый тег. Добавьте следующее в заголовок страницы в iframe:

<base target="_parent">

Это загрузит все ссылки на странице в родительском окне. Если вы хотите, чтобы ваши ссылки загружались в новом окне, используйте:

<base target="_blank">

Этот тег полностью поддерживается во всех браузерах.


4
Как этот тариф кросс-браузерный?
Чарли Шлиссер

3
@Wilf Я был не совсем прав:;) <base target>должен предшествовать любому <a href>, так как он устанавливает контекст просмотра по умолчанию для следующих ссылок; <base href>должен предшествовать любой ссылке на URL ( <* href> <* src> <form action> <object data>…), поскольку он устанавливает базовый URL, относительно которого разрешаются относительные URL.
Сэм

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
я пробую это, открыто в новом окне
Хаим Евгений

3
+1 от меня, base target = "_ parent" работает, но target = "_ parent" никогда не подводил меня!

7
<base target="_blank">Это нормально, но вопрос здесь об одной ссылке, а не об изменении поведения всех ссылок в iframe. Для меня это правильный ответ.
Крискодзи


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

15

Там есть HTML-элемент, baseкоторый позволяет вам:

Укажите URL-адрес по умолчанию и цель по умолчанию для всех ссылок на странице:

<base target="_blank" />

Указывая, _blankвы убедитесь, что все ссылки внутри iframe будут открыты снаружи.


это наследуется во вложенных iframes?
beppe9000

7

Как уже отмечалось, вы можете использовать целевой атрибут, но он технически устарел в XHTML. Это оставляет вас с использованием JavaScript, как правило, что-то вроде parent.window.location.



@ PaulD. Ждите ссылку, которую вы разместили сейчас 404s.
Дэн Левенхерц

1
@ Дан: ага, да, спасибо. Свежая ссылка: dev.w3.org/html5/spec/…
Пол Д. Уэйт

7

Попробуй target="_parent" атрибут внутри anchor tag.


я пробую это, открыто в новом окне
Хаим Евгений

4
Попробуйте target = "_ top". Iframe может содержать вложенные iframe? Или фактическая ссылка открывается javascript на событие onclick?
Джи

5

Если вы используете iframe на своей веб-странице, вы можете столкнуться с проблемой при изменении всей страницы через гиперссылку HTML (тег привязки) из iframe. Есть два решения, чтобы смягчить эту проблему.

Решение 1. Вы можете использовать целевой атрибут тега привязки, как показано в следующем примере.

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

Решение 2. Вы также можете открыть новую страницу в родительском окне из iframe с помощью JavaScript.

<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»:

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

Этот <base>тег менее универсален, и браузеры не соответствуют его требованиям для его размещения в документе, что требует более кросс-браузерного тестирования. В зависимости от вашего проекта и ситуации, может быть трудно или даже совершенно невозможно достичь идеального кросс-браузерного размещения<base> тега .

Выполнение этого с target="_parent"атрибутом <a>тега не только более удобно для браузера, но также позволяет различать ссылки, которые вы хотите открыть в iframe, и ссылки, которые вы хотите открыть в родительском.


3

<a target="parent">откроет ссылки в новой вкладке / окне ... <a target="_parent">откроет ссылки в родительском / текущем окне, не открывая новые вкладки / окна. Don't_forget_that_underscore!


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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.