Apakah IFrames (HTML) sudah usang? [Tutup]

90

Mendapatkan pesan yang kontradiktif tentang itu, semoga tidak. Saya tidak dapat membayangkan dukungan untuk itu akan berhenti, karena trilyunan situs menggunakannya.

Beberapa pertanyaan tambahan tentang itu:

  1. Mengapa mereka harus menghapus tag ini secara bertahap?
  2. Ada alternatif lain untuk itu?
Peter
sumber

Jawaban:

53

Menurut pendapat saya , W3C mengambil risiko dalam membuang iframe dari doctypes HTML dan XHTML yang Ketat. Secara teori, Anda akan menggunakan <object>elemen tersebut untuk menambahkan objek asing ke dokumen Anda, tetapi perbedaan dan batasan browser telah menjadikan ini nonstarter bagi banyak pengembang. Dengan HTML 5 yang jauh lebih pragmatis (yang masih berupa draf), iframe kembali dan bahkan memiliki dua atribut baru:, seamlessdan yang menarik sandbox.

David Kolar
sumber
Luar biasa, saya hanya berharap browser mulai mendukung unggahan file AJAX jadi kita tidak perlu menggunakan iframe atau flash untuk itu.
Xeoncross
@Xeoncross Firefox dan chrome melakukan: developer.mozilla.org/en/Using_files_from_web_applications
jches
2
Pembaruan: atribut semless telah dihapus dari html5. Lihat: caniuse.com/#feat=iframe-seamless
Gabe
76

Dukungan untuk <iframe>masih ada di HTML 5, jadi saya rasa ini tidak akan berubah dalam waktu dekat.

Untuk menjawab pertanyaan Anda yang lain:

  1. <iframe>s (seperti bingkai pada umumnya) sering kali tidak ramah pengguna:
    • Mereka tidak mengizinkan akses mudah konten dalam bingkai melalui URL (tanpa kehilangan konten di luar bingkai setidaknya).
    • Sebagian besar pengguna "teknofobik" merasa jengkel dengan bingkai.
    • Sejauh yang saya tahu, render ini lebih lambat untuk browser
  2. Alternatif termasuk pembuatan halaman dinamis (SSI, PHP, Rails dan sebagainya) dan menggunakan JavaScript / AJAX untuk mengubah konten misalnya <div>

Untuk memperjelas: yang saya bicarakan <iframe>sebagai elemen antarmuka. Bukan elemen tersembunyi untuk memuat hal-hal lain seperti misalnya Google Mail.

Koraktor
sumber
29
+1 untuk titik bahwa Google menggunakan iframe untuk tujuan yang sangat khusus.
cgp
25

Iframe sudah usang untuk tata letak halaman. Jangan pernah menggunakannya sebagai ganti tata letak CSS yang baik, bahkan tata letak berbasis tabel lebih baik.

Alasan bagus untuk menggunakan iframe adalah:

  • ads : adwords misalnya menggunakan teknik ini, itu bagus untuk mengenkapsulasi - css iklan tidak akan merusak halaman Anda.
  • iframe tersembunyi : dapat digunakan untuk ratusan hal yang dapat digunakan, seperti pelacakan, ajax-alternatif, dll.
Pemikir
sumber
35
*** JANGAN gunakan iframes untuk adwords, itu adalah pelanggaran TOS. *** scribd.com/doc/97655/…
cgp
37
altCognito: AdWords menggunakan iframe, bukan saya :) Saya tidak bermaksud meletakkan iframe adword ke iframe lain.
Thinker
7
Saya tahu itu adalah kesalahan umum di luar sana (karenanya semua artikel) jadi saya ingin menandainya untuk memastikan orang mengerti apa yang Anda katakan.
cgp
5
Iframe adalah suatu keharusan ketika menyertakan konten rumit yang harus disajikan dari domain lain, dan tidak boleh dimanipulasi dengan kode CSS atau JS halaman saat ini.
vsync
4
Apa yang Anda bicarakan tidak ada hubungannya dengan iframe. Intinya adalah - Anda menggunakan iframe untuk menghadirkan konteks penelusuran eksternal bersarang. Anda tidak menggunakannya untuk 'tata letak halaman'. Jika saya memerlukan konteks penjelajahan bersarang - bagaimana saya bisa menggunakan "tata letak CSS yang baik"? Ini tidak masuk akal.
Chris B
24

IFrame tidak ketinggalan zaman, tetapi alasan penggunaannya jarang.

Alasan menggunakan iframe:

  • Ini bagus untuk menyembunyikan barang orang lain dari domain lain tetapi tidak terintegrasi dengan mulus. (stylesheet, javascript dll ...)
  • Mengintegrasikan multimedia terkadang dapat dilakukan dengan lebih mudah melalui iframe dibandingkan dengan menggunakan tag embed.
  • Sungguh, kasus yang sangat terspesialisasi seperti kasus gmail di mana mereka menggunakannya untuk suara dan manajemen riwayat.

Saya juga akan menjawab bahwa iframe tidak perlu dihapus, itu adalah tag yang diperlukan dan akan ada untuk sementara waktu.

cgp
sumber
12

Saya telah melihat banyak forum yang menyarankan tag Object sebagai pengganti IFrame, yang mungkin berfungsi dalam banyak kasus.

Misalnya, saya memiliki PDF yang ditampilkan dalam IFrame (karena ada hal lain yang perlu kami tampilkan di halaman selain hanya PDF) dan dapat menampilkannya dengan baik menggunakan Object.

Apa itu:

<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>

Menjadi:

<object id="confirmed_pdf" class="current_pdf" data="/prescriptions/show_pdf?id=123" type="application/pdf" height="570" width="480">
  <p>[Show this message if displaying the PDF did not work]</p>
</object>

Tetapi Object bukanlah pengganti yang cocok untuk memenuhi persyaratan untuk dapat mencetak HANYA bagian PDF dari halaman tersebut.

IFrame seperti jendelanya sendiri di dalam halaman (pada dasarnya jendela di dalam jendela), dan setelah Anda mendapatkan objek jendela, Anda dapat memanggil .print () di atasnya, seperti:

jQuery("#confirmed_pdf").contentWindow.print();

IFrame memiliki properti contentWindow, itulah yang memungkinkan pencetakan hanya bagian itu saja. Objek tidak memiliki properti contentWindow, jadi tidak ada cara untuk mencetak hanya bagian halaman.

Jadi, sepertinya jika Anda hanya menggunakan IFrame untuk menampilkan sesuatu, ada tag lain seperti Objek yang dapat digunakan. Tetapi jika Anda perlu berinteraksi dengan konten IFrame dengan cara tertentu, maka IFrame mungkin diperlukan.

Gayle
sumber
7

IFrame banyak digunakan dengan AJAX. GMail misalnya, menggunakan sembilan IFrame tersembunyi yang saya yakini.

John Topley
sumber
5
Saya menghitung lima iframe. Satu tidak tersembunyi, dan pada kenyataannya, salah satunya adalah hampir seluruh tampilan. IFrame biasanya tidak digunakan dengan Ajax (toh tidak dalam kerangka kerja utama mana pun). Gmail menggunakan iframe untuk hal-hal seperti: Pelacakan riwayat, suara (ganjil), dan semacam gambar kanvas.
cgp
Saya baru saja membaca artikel yang saya baca beberapa tahun yang lalu.
John Topley
7

IFrames tidak mati, tapi Frameset / Frames sedang sekarat.

Dalam 2 rilis terakhir IE (IE7 / IE8) memperbesar Frame (bukan IFrames) telah menciptakan hasil yang menghancurkan.

Dengan segala cara, gunakan IFrames, tetapi IMHO menjauh dari Framesets / Frames.

scunliffe.dll
sumber
5

Di perusahaan saya sebelumnya, kami menyediakan aplikasi yang dihosting pelanggan yang akan diintegrasikan ke dalam situs web mereka sendiri. Terkadang, mereka akan menggunakan IFrame untuk melakukan ini, menyesuaikan halaman yang dihosting dengan desain mereka yang sudah ada. Kadang-kadang ini bahkan dilakukan dengan mulus (mis. IFrame tidak memiliki batas atau scrollbar, itu hanya tampak seperti bagian dari halaman). Saya menganggap ini sebagai penggunaan tag yang baik.

Joshua Carmody
sumber
Iframe adalah suatu keharusan untuk menangani hal-hal yang Anda butuhkan untuk dimasukkan ke dalam situs web klien dengan gaya dan Javascript Anda sendiri, yang tidak akan rusak oleh kode pengguna. CSS dapat diganti dengan mudah dan JS terkadang dapat menyebabkan konflik (dalam kasus yang jarang terjadi), jadi sebaiknya gunakan pendekatan "Sistem Tertutup".
vsync
5

Mereka bisa sangat berguna dalam beberapa keadaan, tetapi itu terbatas. Secara khusus, penyematan fungsi umum di beberapa situs.

Misalnya, saya memiliki klien yang menjalankan sejumlah situs e-niaga barang Skotlandia. Sebagai bagian dari ini, kami telah mengembangkan beberapa aplikasi sederhana untuk menemukan kemungkinan nama klan dari nama keluarga Anda atau pilihan tartan Anda (terkikik jika Anda mau, tetapi tartan bernilai $ 700 juta setahun bagi perekonomian kami). Basis data di balik ini sangat besar (hampir sepuluh ribu baris dalam nama inti dan tabel tartan) dan diperbarui secara teratur.

Jadi kami memiliki aplikasi yang disiapkan untuk berjalan di satu situs web dan kemudian menyematkannya ke situs web kami yang lain menggunakan iframe, memungkinkan penyaluran parameter javascript sederhana sehingga kami dapat mengintegrasikan pemilihan tartan atau klan dengan fungsionalitas di situs penyematan. Iframe disetel sebagai noborder sehingga tampak mulus bagi pengguna akhir.

Tentu saja akan ada cara lain untuk melakukan ini, tetapi penggunaan iframe sederhana dan kuat. Dan itu pasti tidak ketinggalan zaman.

Cruachan
sumber
5

Kuda untuk kursus ... <iframe> seperti apa pun ... untuk tujuan yang benar mereka adalah alat yang tepat; untuk tujuan yang salah, mereka adalah hack yang jelek, atau lebih buruk.

Di Ajax, <div> sering kali merupakan wadah yang lebih sesuai. Di beberapa tempat, aktivitas melewatkan konten eksternal sebagai bagian dari situs Anda sendiri, seperti yang didukung oleh <iframe>, tidak pantas.

Tim saya menggunakan <iframe> beberapa hari yang lalu sebagai cara yang ideal untuk memberi pengguna akses ke riwayat email HTML mereka - email tersebut adalah halaman <html> lengkap yang ingin kami sisipkan dengan mudah ke dalam template web kami. <iframe> benar-benar sempurna untuk menyajikan data itu] '.

Di sisi lain, <iframe> harus hampir selalu dihapus atau dinonaktifkan di konten apa pun yang dikirim pengguna yang ditampilkan kembali ke situs, karena dalam konteks itu mereka adalah masalah keamanan utama.

tsuchan
sumber
4

Spesifikasi gadget google saat ini bergantung pada iframes: http://code.google.com/apis/gadgets/docs/spec.html

Saat ini, ini adalah satu-satunya cara sederhana untuk menyediakan isolasi bagi aplikasi javascript yang ditarik dari beberapa domain / penyedia.

Juga banyak widget yang disematkan orang di situs web mereka dari pihak ketiga menggunakan iframe.

Meskipun memiliki kekurangan, iframe memberikan solusi pragmatis untuk masalah umum di web. Saya harus menebak bahwa mereka akan ada untuk beberapa waktu yang akan datang.

Jason
sumber
2

Saya baru saja mengubah situs dari Frameset normal ke Iframes karena frame normal tidak dapat melakukan apa yang saya butuhkan. Itu tidak menyebabkan masalah dengan basis kode lainnya.

Valerion
sumber
2

Masalah Kepatuhan dan Keamanan juga dapat mendorong Anda untuk menggunakan Iframes; Keranjang belanja adalah implementasi berbasis IFrame yang populer saat Anda ingin memasukkan keranjang belanja secara visual sebagai bagian dari beberapa halaman web tanpa bertanggung jawab penuh atas sisi pemrosesan pembayaran.

Kami biasanya mengirimkan Iframe untuk mengintegrasikan barang-barang eCommerce kami dan klien seperti bagaimana turnkeynya.

quolo
sumber
0

Saya bekerja untuk perusahaan yang menggunakan bingkai untuk segala hal mulai dari menu pull down, daftar, blok konten, dll hanya untuk menutupi seluk-beluk formulir web .net. Aplikasinya sangat lambat dan hanya berjalan di IE. Jangan lakukan ini.

Lovemossnot
sumber