Cara memaksa tautan dari iframe dibuka di jendela induk

Jawaban:

617

Saya menemukan solusi terbaik adalah dengan menggunakan tag dasar . Tambahkan yang berikut ini ke kepala halaman di iframe:

<base target="_parent">

Ini akan memuat semua tautan pada halaman di jendela induk. Jika Anda ingin tautan Anda dimuat di jendela baru, gunakan:

<base target="_blank">

Tag ini didukung penuh di semua browser.

Chris Vasselli
sumber
4
Bagaimana cara ongkos lintas-browser ini?
Charlie Schliesser
3
@Wilf Saya tidak begitu benar:;) <base target>harus datang sebelum <a href>, karena itu menetapkan konteks penelusuran default untuk tautan berikut; <base href>harus muncul sebelum referensi URL apa pun ( <* href> <* src> <form action> <object data>...) karena ia menetapkan URL dasar yang dibandingkan dengan URL relatif yang diselesaikan.
sam
5
mengapa Anda menjawab pertanyaan ini setahun setelah saya menjawabnya, dengan jawaban yang sama persis? tapi kamu terpilih. ini sangat aneh.
vsync
5
Saya pikir itu karena jawaban Anda membuka tautan di jendela baru, sedangkan jawaban saya membukanya di jendela induk iframe, yang merupakan pertanyaan awal. Maaf mencuri guntur Anda!
Chris Vasselli
1
Perhatikan bahwa <basetag tidak memiliki penutup sesuai dengan spesifikasi w3.org/TR/html5/document-metadata#the-base-element jadi seharusnya<base target="_parent" >
Mark Schultheiss
147

Gunakan atribut-target:

<a target="_parent" href="http://url.org">link</a>
nnevala
sumber
1
Saya mencoba ini, terbuka di jendela baru
Haim Evgi
3
+1 dari saya, target dasar = "_ parent" berfungsi tetapi target = "_ parent" tidak pernah gagal untuk saya!
7
<base target="_blank">ok, tapi pertanyaannya di sini adalah tentang satu tautan, bukan tentang mengubah perilaku semua tautan di iframe. Bagi saya ini adalah jawaban yang benar.
kriskodzi
34

Dengan JavaScript:

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

Anda dapat menggunakan opsi apa saja

dalam hal hanya halaman induk:

jika Anda ingin membuka semua tautan ke halaman induk atau iframe induk, maka Anda menggunakan kode berikut di bagian kepala iframe:

<base target="_parent" />

ATAU

jika Anda ingin membuka tautan tertentu ke halaman induk atau iframe induk, maka Anda menggunakan cara berikut:

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

ATAU

dalam kasus iframe bersarang:

Jika ingin membuka semua tautan ke jendela browser (redirect di url browser), maka Anda menggunakan kode berikut di bagian kepala 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>

ATAU

jika Anda ingin membuka tautan tertentu ke jendela browser (redirect di url browser), maka Anda menggunakan cara berikut:

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

atau

<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>
Ahosan Karim Asik
sumber
1
Jawaban yang bagus, saya hanya perlu menggunakan ini untuk tautan tertentu, namun jawaban yang diterima hanya menjelaskan cara mengubah target untuk semua tautan di halaman. Terima kasih
dading84
15

Ada elemen HTML yang disebut baseyang memungkinkan Anda untuk:

Tentukan URL default dan target default untuk semua tautan di halaman:

<base target="_blank" />

Dengan menentukan _blankAnda memastikan semua tautan di dalam iframe akan dibuka di luar.

vsync
sumber
Apakah ini diwarisi dalam iframe bersarang?
beppe9000
7

Seperti yang disebutkan, Anda bisa menggunakan atribut target, tetapi secara teknis tidak digunakan lagi dalam XHTML. Itu membuat Anda menggunakan javascript, biasanya sesuatu seperti parent.window.location.

Ryan McGrath
sumber
@ PaulD. Buka tautan yang Anda kirim sekarang 404s.
Dan Loewenherz
1
@Dan: aha, ya terima kasih. Tautan baru: dev.w3.org/html5/spec/…
Paul D. Waite
7

Coba target="_parent" atribut di dalam anchor tag.

Wah
sumber
Saya mencoba ini, terbuka di jendela baru
Haim Evgi
4
Coba target = "_ top". Iframe mungkin mengandung iframe yang bersarang? Atau tautan sebenarnya dibuka oleh javascript pada acara onclick?
Wah
5

Jika Anda menggunakan iframe di halaman web Anda, Anda mungkin mengalami masalah saat mengubah seluruh halaman melalui hyperlink HTML (anchor tag) dari iframe. Ada dua solusi untuk mengatasi masalah ini.

Solusi 1. Anda dapat menggunakan atribut target dari tag anchor seperti yang diberikan dalam contoh berikut.

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

Solusi 2. Anda juga dapat membuka halaman baru di jendela induk dari iframe dengan JavaScript.

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

Ingat ⇒ target="_parent"telah usang dalam XHTML, tetapi masih didukung dalam HTML 5.x.

Lebih banyak dapat dibaca dari tautan berikut http://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.html

pengguna1788142
sumber
4

Solusi yang paling serbaguna dan paling lintas-browser adalah untuk menghindari penggunaan tag "base", dan alih-alih menggunakan atribut target dari tag "a":

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

Itu <base> tag kurang fleksibel dan browser tidak konsisten dalam persyaratan mereka untuk penempatannya dalam dokumen, membutuhkan lebih cross-browser pengujian. Tergantung pada proyek dan situasi Anda, mungkin sulit atau bahkan sama sekali tidak layak untuk mencapai penempatan <base>tag lintas-browser yang ideal .

Melakukan ini dengan target="_parent"atribut <a>tag tidak hanya lebih ramah browser, tetapi juga memungkinkan Anda untuk membedakan antara tautan yang ingin Anda buka di iframe, dan yang ingin Anda buka di induknya.

Adelmar
sumber
3

<a target="parent">akan membuka tautan di tab / jendela baru ... <a target="_parent">akan membuka tautan di jendela induk / saat ini, tanpa membuka tab / jendela baru. Don't_forget_that_underscore!

krisjd
sumber
2

Yah aku temukan

<base target="_parent" />

Ini berguna untuk membuka semua tautan iframe yang terbuka di iframe.

Dan

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

Ini dapat kita gunakan untuk seluruh halaman atau bagian tertentu dari halaman.

Terima kasih atas bantuan Anda.

Ratan Paul
sumber
1

Mencoba target="_top"

<a href="http://example.com" target="_top">
   This link will open in same but parent window of iframe.
</a>
Aamir Shahzad
sumber
tidak "_top"sama dengan "_parent"?
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>
sandeep kumar
sumber