Quirksmode punya pos tentang ini .
Karena halaman sekarang rusak, dan hanya dapat diakses melalui archive.org, saya mereproduksi di sini:
IFrames
Pada halaman ini saya memberikan gambaran singkat tentang mengakses iframe dari halaman yang sedang mereka buka. Tidak mengherankan, ada beberapa pertimbangan browser.
Iframe adalah bingkai inline, sebuah bingkai yang, meskipun mengandung halaman yang sepenuhnya terpisah dengan URL-nya sendiri, tetap ditempatkan di dalam halaman HTML lain. Ini memberikan kemungkinan yang sangat bagus dalam desain web. Masalahnya adalah untuk mengakses iframe, misalnya untuk memuat halaman baru ke dalamnya. Halaman ini menjelaskan cara melakukannya.
Bingkai atau objek?
Pertanyaan mendasarnya adalah apakah iframe dilihat sebagai bingkai atau sebagai objek.
- Seperti dijelaskan pada halaman Pendahuluan untuk membingkai , jika Anda menggunakan bingkai, peramban membuat hierarki bingkai untuk Anda (
top.frames[1].frames[2]
dan semacamnya). Apakah iframe cocok dengan hierarki frame ini?
- Atau apakah browser melihat iframe hanya sebagai objek lain, sebuah objek yang kebetulan memiliki properti src? Dalam hal ini kita harus menggunakan panggilan DOM standar (suka
document.getElementById('theiframe'))
mengaksesnya. Secara umum browser memungkinkan kedua tampilan pada iframe 'real' (hard-coded), tetapi iframe yang dihasilkan tidak dapat diakses sebagai frame.
Atribut NAME
Aturan yang paling penting adalah untuk memberikan iframe apa pun yang Anda buat name
atribut, bahkan jika Anda juga menggunakan id
.
<iframe src="iframe_page1.html"
id="testiframe"
name="testiframe"></iframe>
Sebagian besar browser memerlukan name
atribut untuk membuat bagian iframe dari hirarki frame. Beberapa browser (terutama Mozilla) membutuhkan id
agar iframe dapat diakses sebagai objek. Dengan menetapkan kedua atribut ke iframe Anda membuat opsi Anda tetap terbuka. Tetapi name
jauh lebih penting daripada id
.
Mengakses
Entah Anda mengakses iframe sebagai objek dan mengubahnya src
atau Anda mengakses iframe sebagai bingkai dan mengubahnya location.href
.
document.getElementById ('iframe_id'). src = 'newpage.html'; bingkai ['iframe_name']. location.href = 'newpage.html'; Sintaks bingkai sedikit lebih disukai karena Opera 6 mendukungnya tetapi bukan sintaks objek.
Mengakses iframe
Jadi untuk pengalaman lintas-peramban yang lengkap, Anda harus memberi nama iframe dan menggunakannya
frames['testiframe'].location.href
sintaksis. Sejauh yang saya tahu ini selalu berhasil.
Mengakses dokumen
Mengakses dokumen di dalam iframe cukup sederhana, asalkan Anda menggunakan name
atribut tersebut. Untuk menghitung jumlah tautan dalam dokumen di iframe, lakukan
frames['testiframe'].document.links.length
.
Iframe yang dihasilkan
Ketika Anda menghasilkan iframe melalui DOM W3C , iframe tidak segera dimasukkan ke dalam frames
array, danframes['testiframe'].location.href
sintaks tidak akan langsung berfungsi. Peramban memerlukan sedikit waktu sebelum iframe muncul dalam array, waktu selama skrip tidak dapat berjalan.
Itu document.getElementById('testiframe').src
sintaks bekerja dengan baik dalam segala situasi.
The target
atribut link tidak bekerja baik dengan iframe dihasilkan, kecuali dalam Opera, meskipun saya memberi saya dihasilkan iframe baik name
danid
.
Kurangnya target
dukungan berarti bahwa Anda harus menggunakan JavaScript untuk mengubah konten iframe yang dihasilkan, tetapi karena Anda tetap membutuhkan JavaScript untuk menghasilkannya, saya tidak melihat ini sebagai masalah.
Ukuran teks dalam iframe
Bug hanya Explorer 6 yang penasaran:
Saat Anda mengubah ukuran teks melalui menu Lihat, ukuran teks dalam iframe diubah dengan benar. Namun, peramban ini tidak mengubah jeda baris dalam teks asli, sehingga bagian dari teks dapat menjadi tidak terlihat, atau jeda baris dapat terjadi sementara garis masih dapat menahan kata lain.