Як змусити відкрити посилання з 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" >
Марк Шультхейс

147

Використовуйте цільовий атрибут:

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

1
я спробую це, відкрито в новому вікні
Хаїм Евгі

3
+1 від мене, базова ціль = "_ батьків" працює, але target = "_ батьків" ніколи для мене не виходила з ладу!

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

15

Існує HTML-елемент, baseякий дозволяє:

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

<base target="_blank" />

Вказавши, _blankви переконайтеся, що всі посилання всередині iframe будуть відкриті назовні.


це успадковується у вкладених рамках?
beppe9000

7

Як зазначалося, ви можете використовувати атрибут target, але він технічно застарів у XHTML. Це дозволяє вам використовувати JavaScript, зазвичай щось подібне parent.window.location.



@ PaulD.Загляньте посилання, яке ви опублікували зараз 404s.
Dan Loewenherz

1
@Dan: ага, так, дякую. Свіже посилання: dev.w3.org/html5/spec/…
Пол Д. Вейт

7

Спробуйте target="_parent" атрибут всередині anchor tag.


я спробую це, відкрито в новому вікні
Хаїм Евгі

4
Спробуйте target = "_ верх". Iframe може містити вкладені рамки? Або власне посилання відкривається javascript на події onclick?
Gee

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", що in був застарілий у 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">відкриє посилання у батьківському / поточному вікні, не відкриваючи нових вкладок / вікон. Не_забувайте_надзначуйте!


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.