Yah, saya punya IFrame, yang memanggil halaman domain yang sama. Masalah saya adalah saya ingin mengakses beberapa informasi dari iframe induk ini dari halaman yang disebut ini (dari JavaScript). Bagaimana saya bisa mengakses Iframe ini?
Detail: Ada beberapa Iframe seperti ini, yang dapat memuat halaman yang sama, karena saya memprogram lingkungan Windows. Saya bermaksud untuk menutup Iframe ini, itu sebabnya saya perlu tahu mana yang harus saya tutup dari dalam dirinya. Saya memiliki array yang menyimpan referensi untuk Iframe ini.
EDIT: Di sana iframe dihasilkan secara dinamis
javascript
iframe
José Leal
sumber
sumber
Jawaban:
Anda juga dapat mengatur nama dan ID ke nilai yang sama
sehingga Anda akan dapat menggunakan kode berikutnya di dalam halaman anak
sumber
iframe
terlalu kecil. Tapi mengapa itu berhasil?window.name
mengembalikan sebuah string. Apa yang berbeda tentang menggunakanwindow.name
daripada hanya meneruskan nama id sebagai string yang tidak berfungsi.)?Cukup panggil
window.frameElement
dari halaman berbingkai Anda. Jika halaman tidak dalam bingkai makaframeElement
akan menjadinull
.Cara lain (memasukkan elemen jendela ke dalam bingkai kurang sepele) tetapi demi kelengkapan:
sumber
window.frameElement
kembalinull
ketika jendela dan iframe memiliki domain yang berbeda, yaitu pesan lintas asal.Saya akan merekomendasikan menggunakan API postMessage .
Di iframe Anda, hubungi:
Di halaman Anda termasuk iframe Anda dapat mendengarkan acara seperti ini:
By the way, juga dimungkinkan untuk melakukan panggilan ke jendela lain, dan tidak hanya iframe.
Baca lebih lanjut tentang API postMessage di blog John Resigs di sini
sumber
<iframe>
isinya tidak harus tahu apa-apa tentang orang tua dan sebaliknya. Mereka hanya harus mematuhi kontrak pesan sederhana. Luar biasa!'*'
.'*'
pada klien. Setiap solusi lain memberikan kesalahan pada browser Chrome yang memperlakukan file dalam folder klien sebagai bukan Asal Sama karena server tidak disiapkan. Ini adalah solusi terbaik dan satu - satunya : dyn-web.com/tutorials/iframes/postmessagePertanyaan lama, tapi saya hanya punya masalah yang sama dan menemukan cara untuk mendapatkan iframe. Ini hanyalah masalah pengulangan melalui array frame jendela [] dan menguji konten setiap frame di jendela terhadap jendela tempat kode Anda berjalan. Contoh:
Atau, menggunakan jQuery:
Metode ini menyimpan menugaskan ID untuk setiap iframe, yang baik dalam kasus Anda karena mereka dibuat secara dinamis. Saya tidak dapat menemukan cara yang lebih langsung, karena Anda tidak bisa mendapatkan elemen iframe menggunakan window.parent - langsung ke elemen jendela induk (melewatkan iframe). Jadi perulangan melalui mereka sepertinya satu-satunya cara, kecuali jika Anda ingin menggunakan ID.
sumber
Anda dapat menggunakan
parent
untuk mengakses halaman induk. Jadi untuk mengakses suatu fungsi adalah:sumber
Setelah id iframe diatur, Anda dapat mengakses iframe dari dokumen dalam seperti yang ditunjukkan di bawah ini.
Berfungsi dengan baik di IE, Chrome dan FF.
sumber
var iframe = frameElement
Mungkin hanya digunakan
ke iframe Anda untuk mendapatkan bingkai panggilan / windows. Jika Anda memiliki beberapa bingkai panggilan, Anda dapat menggunakan
sumber
Coba ini, dalam bingkai induk Anda mengatur Anda IFRAME seperti ini:
Perhatikan bahwa id dari setiap frame dilewatkan sebagai jangkar di src.
kemudian di html batin Anda, Anda dapat mengakses id dari frame itu dimuat melalui location.hash:
maka Anda dapat mengakses parent.document.getElementById () untuk mengakses tag iframe dari dalam iframe
sumber
sumber