Üst pencerede iframe'den bağlantı zorlama


Yanıtlar:


617

En iyi çözümü temel etiketi kullanmak olduğunu buldum . Iframe'deki sayfanın başına aşağıdakini ekleyin:

<base target="_parent">

Bu, üst penceredeki sayfadaki tüm bağlantıları yükleyecektir. Bağlantılarınızın yeni bir pencerede yüklenmesini istiyorsanız, şunu kullanın:

<base target="_blank">

Bu etiket tüm tarayıcılarda tamamen desteklenmektedir .


4
Bu ücret tarayıcılar arası nasıl?
Charlie Schliesser

3
@Wilf tam olarak doğru değildi:;) aşağıdaki bağlantılar için varsayılan tarama içeriğini ayarladığından, <base target>herhangi birinden önce gelmelidir <a href>; göreli URL'lerin çözümlendiği temel URL'yi ayarladığından <base href>herhangi bir URL referansından ( <* href> <* src> <form action> <object data>…) önce gelmelidir .
sam

5
bu soruyu cevapladıktan bir yıl sonra neden aynı cevapla cevapladınız? ama sen seçildin. bu çok garip.
vsync

5
Sanırım cevabınız bağlantıyı yeni bir pencerede açıyor, oysa benimki bunu orijinal soru olan iframe'in üst penceresinde açıyor. Gök gürültüsünü çaldığın için üzgünüm!
Chris Vasselli

1
<baseEtiketin, w3.org/TR/html5/document-metadata#the-base-element spesifikasyonuna göre kapanma olmadığını unutmayın, bu yüzden olmalıdır<base target="_parent" >
Mark Schultheiss

147

Target-niteliğini kullanın:

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

1
I try this, yeni pencerede açık
Haim Evgi

3
Benden +1, base target = "_ parent" çalışıyor ancak target = "_ parent" benim için hiç başarısız olmadı!

7
<base target="_blank">tamam, ancak buradaki soru, iframe'deki tüm bağlantıların davranışını değiştirmekle ilgili değil, tek bir bağlantıyla ilgilidir. Benim için doğru cevap bu.
kriskodzi

34

JavaScript ile:

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

28

Herhangi bir seçeneği kullanabilirsiniz

yalnızca üst sayfa olması durumunda:

tüm bağlantıyı üst sayfaya veya üst iframe'e açmak istiyorsanız , iframe'in baş bölümünde aşağıdaki kodu kullanırsınız:

<base target="_parent" />

VEYA

üst sayfaya veya üst iframe'e belirli bir bağlantı açmak istiyorsanız , aşağıdaki yolu kullanırsınız:

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

VEYA

iç içe iframe durumunda:

Tüm bağlantıyı tarayıcı penceresine açmak istiyorsanız (tarayıcı url'sine yönlendir), iframe'in baş bölümünde aşağıdaki kodu kullanırsınız:

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

VEYA

tarayıcı penceresine belirli bir bağlantı açmak istiyorsanız (tarayıcı url'sine yönlendir), aşağıdaki yolu kullanırsınız:

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

veya

<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
İyi yanıt, bunu sadece belirli bir bağlantı için kullanmam gerekiyordu, ancak kabul edilen cevap yalnızca sayfadaki tüm bağlantılar için hedefin nasıl değiştirileceğini açıklıyor. Teşekkürler
dading84

15

Aşağıdakileri baseyapmanızı sağlayan bir HTML öğesi var :

Bir sayfadaki tüm bağlantılar için varsayılan bir URL ve varsayılan bir hedef belirtin:

<base target="_blank" />

Belirterek _blank, iframe içindeki tüm bağlantıların dışarıda açılacağından emin olun .


bu iç içe iframe'lerde miras alınır?
beppe9000


7

İçindeki target="_parent" özelliği deneyin anchor tag.


I try this, yeni pencerede açık
Haim Evgi

4
Target = "_ top" komutunu deneyin. İframe iç içe iframe'ler içerebilir mi? Veya gerçek bağlantı onclick olayında javascript tarafından açılır mı?
Gee

5

Web sayfanızda iframe kullanıyorsanız, iframe'den bir HTML köprüsü (bağlantı etiketi) aracılığıyla tüm sayfayı değiştirirken bir sorunla karşılaşabilirsiniz. Bu sorunu hafifletmek için iki çözüm vardır.

Çözüm 1. Aşağıdaki örnekte verildiği gibi bağlantı etiketinin hedef niteliğini kullanabilirsiniz.

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

Çözüm 2. JavaScript ile iframe'den üst pencerede yeni bir sayfa da açabilirsiniz.

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

Unutmayın X target="_parent"XHTML'de kullanımdan kaldırılmıştır, ancak yine de HTML 5.x'te desteklenmektedir.

Daha fazla bilgiyi aşağıdaki bağlantıdan okuyabilirsiniz http://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.html


4

En çok yönlü ve en çapraz tarayıcı çözümü, "temel" etiketinin kullanılmasını önlemek ve bunun yerine "a" etiketlerinin hedef özelliğini kullanmaktır:

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

<base>Etiketi az çok yönlüdür ve tarayıcılar daha tarayıcılar arası testi gerektiren belgesinde tek yerleşim için kendi gereksinimleri tutarsız. Projenize ve durumunuza bağlı olarak, <base>etiketin ideal tarayıcılar arası yerleşimini sağlamak zor, hatta tamamen olanaksız olabilir .

Bu Yapma target="_parent"oznıtelığı <a>etiketi sadece daha tarayıcı dostu değil, aynı zamanda size iframe'de açmak isteyen bağlantıları ayırt etmek izin verir ve bu size ebeveynde açmak istiyorum.


3

<a target="parent">bağlantıları yeni bir sekmede / pencerede açar ... <a target="_parent">bağlantıları yeni sekmeler / pencereler açmadan üst / geçerli pencerede açar. Don't_forget_that_underscore!


2

Yah buldum

<base target="_parent" />

Bu, iframe'de açılan tüm iframe bağlantılarını açmak için kullanışlıdır.

Ve

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

Bu, tüm sayfa veya sayfanın belirli bir kısmı için kullanabiliriz.

Yardımlarınız için hepinize teşekkürler.


1

Deneyin target="_top"

<a href="http://example.com" target="_top">
   This link will open in same but parent window of iframe.
</a>

ile "_top"aynı değil "_parent"mi?
svelandiag

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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.