Jawaban:
Seperti halnya semua teknologi, ia mengalami pasang surut. Jika Anda menggunakan iframe untuk menjelajahi situs yang dikembangkan dengan benar, maka tentu saja itu adalah praktik yang buruk. Namun terkadang iframe dapat diterima.
Salah satu masalah utama dengan iframe berkaitan dengan bookmark dan navigasi. Jika Anda menggunakannya untuk hanya menanamkan halaman di dalam konten Anda, saya pikir itu baik-baik saja. Itulah gunanya iframe.
Namun saya telah melihat iframe dilecehkan juga. Seharusnya tidak pernah digunakan sebagai bagian integral dari situs Anda, tetapi sebagai bagian dari konten dalam situs.
Biasanya, jika Anda bisa melakukannya tanpa iframe, itu pilihan yang lebih baik. Saya yakin orang lain di sini mungkin memiliki lebih banyak informasi atau lebih banyak contoh spesifik, semuanya bermuara pada masalah yang Anda coba selesaikan.
Dengan itu, jika Anda terbatas pada HTML dan tidak memiliki akses ke backend seperti PHP atau ASP.NET dll, kadang-kadang iframe adalah satu-satunya pilihan Anda.
window.postMessage()
, misalnya untuk menerapkan pengubahan ukuran iframe kolaboratif.
Itu bukan praktik yang buruk, mereka hanya alat lain dan mereka menambah fleksibilitas.
Untuk digunakan sebagai elemen halaman standar ... mereka bagus, karena mereka adalah cara sederhana dan dapat diandalkan untuk memisahkan konten ke beberapa halaman. Khusus untuk konten yang dibuat pengguna, mungkin berguna untuk "mem-sandbox" halaman internal menjadi iframe
markup yang buruk tidak memengaruhi halaman utama. Kelemahannya adalah jika Anda memperkenalkan beberapa lapisan pengguliran (satu untuk browser, satu untuk iframe
) pengguna Anda akan merasa frustrasi. Seperti yang dikatakan oleh adzm, Anda tidak ingin menggunakan iframe
navigasi utama, tetapi pikirkan tentang mereka sebagai teks / markup yang setara dengan cara video atau file media lain akan disematkan.
Untuk acara latar skrip, pilihan umumnya antara tersembunyi iframe
dan XmlHttpRequest
memuat konten untuk halaman saat ini. Perbedaannya adalah bahwa iframe
menghasilkan beban halaman, sehingga Anda dapat bergerak maju dan mundur di cache browser dengan sebagian besar browser. Perhatikan bahwa Google, yang menggunakan XmlHttpRequest
semua tempat, juga menggunakan iframe
huruf s dalam kasus tertentu untuk memungkinkan pengguna bergerak maju dan mundur dalam riwayat peramban.
Ini 'praktik buruk' untuk menggunakannya tanpa memahami kelemahan mereka. Posting Adzm merangkumnya dengan sangat baik.
Di sisi lain, gmail banyak menggunakan iFrames di latar belakang untuk beberapa fitur yang lebih keren (seperti unggahan file otomatis). Jika Anda mengetahui keterbatasan iFrames, saya tidak yakin Anda harus merasa terganggu saat menggunakannya.
Setelah bekerja dengan mereka dalam banyak keadaan, saya benar-benar berpikir bahwa iframe adalah pemrograman web yang setara dengan pernyataan goto. Artinya, sesuatu yang harus dihindari secara umum. Di dalam suatu situs mereka bisa berguna. Namun, lintas situs, mereka hampir selalu merupakan ide yang buruk untuk apa pun kecuali konten yang paling sederhana.
Pertimbangkan kemungkinan ... jika digunakan untuk konten parameter, mereka telah membuat antarmuka. Dan di situs profesional, antarmuka itu memerlukan SLA dan manajemen versi - yang hampir selalu diabaikan untuk segera online.
Jika digunakan untuk konten aktif - membingkai skrip yang menampung host - maka ada pembatasan skrip domain lintas (berbeda). Beberapa dapat diretas, tetapi jarang secara konsisten. Dan jika konten berbingkai Anda harus interaktif, ia akan kesulitan melakukannya di luar bingkai.
Jika digunakan dengan konten berlisensi, maka situs yang berpartisipasi dibebani oleh kebutuhan untuk memindahkan informasi hak keluar dari pita antara host.
Jadi, meskipun, kadang-kadang berguna dalam suatu situs, mereka agak tidak cocok untuk mashup. Anda jauh lebih baik melihat portal dan portlet nyata. Lebih buruk lagi, mereka adalah kesayangan setiap amatir web - banyak manajer teknologi telah menganggap mereka sebagai solusi untuk banyak masalah. Bahkan, mereka menciptakan lebih banyak.
Berdasarkan pengalaman saya, sisi positif untuk iframe adalah ketika memanggil kode pihak ketiga, yang mungkin melibatkan memanggil javascript yang memanggil a memiliki Document.write();
perintah. Seperti yang Anda ketahui, perintah-perintah ini tidak dapat dipanggil secara tidak sinkron karena cara ini diuraikan (DOM Parser dll). Contoh dari ini adalah http://sourceforge.net/projects/phpadsnew/ Saya telah menggunakan iframe untuk membantu mempercepat situs kami karena ada beberapa panggilan ke phpadsnews dan situs itu menunggu tanggapan sebelum melanjutkan untuk membuat yang berbeda bagian dari halaman. dengan iframe saya dapat mengizinkan situs untuk membuat bagian lain dari halaman dan masih memanggil Document.write()
perintah phpads secara tidak sinkron. Mencegah dan mengunci.
Pasti ada kegunaan untuk iframes, orang. Bagaimana lagi Anda meletakkan widget jaringan cuaca di halaman Anda? Satu-satunya cara lain adalah dengan mengambil XML mereka dan menguraikannya, tetapi tentu saja Anda perlu kondisi untuk memunculkan grafik cuaca yang terkait ... tidak benar-benar layak, tetapi jauh lebih bersih jika Anda punya waktu.
Model frameset asli (Frameet dan Frame-elemen) sangat buruk dari sudut pandang kegunaan. IFrame vas penemuan kemudian yang tidak memiliki banyak masalah seperti model frameset asli, tetapi memang memiliki kelemahan.
Jika Anda mengizinkan pengguna menavigasi di dalam IFrame, maka tautan dan bookmark tidak akan berfungsi seperti yang diharapkan (karena Anda menandai URL halaman luar, tetapi bukan URL iframe).
Ketika halaman utama Anda memuat protokol HTTP dan bagian-bagian halaman Anda perlu bekerja dalam protokol HTTPS, iFrame dapat mengalahkan jsonp hands down.
Terutama, jika dataType Anda tidak asli json dan perlu diterjemahkan pada server menjadi json dan diterjemahkan pada klien kembali ke misalnya html kompleks.
Jadi tidak - iFrame tidak jahat.
Mereka tidak buruk, tetapi sebenarnya membantu. Saya punya masalah besar beberapa waktu lalu di mana saya harus menanamkan feed twitter saya dan itu tidak akan membiarkan saya melakukannya di halaman yang sama, jadi saya meletakkannya di halaman yang berbeda, dan memasukkannya ke dalam iframe.
Mereka juga bagus karena semua browser (dan browser ponsel) mendukungnya. Mereka tidak dapat dianggap sebagai praktik yang buruk, selama Anda menggunakannya dengan benar.
Perlu dicatat bahwa iframe akan, terlepas dari kecepatan koneksi internet pengguna Anda atau konten iframe, menyebabkan sedikit (0,3s atau lebih), tetapi memperlambat kecepatan dalam mengunduh halaman Anda. Ini bukan sesuatu yang akan Anda lihat ketika mengujinya secara lokal. Sebenarnya, ini berlaku untuk setiap elemen yang ditambahkan ke halaman, tetapi iframe tampaknya lebih buruk.
Saya telah melihat IFRAME diterapkan dengan sangat sukses sebagai cara mudah untuk membuat menu konteks dinamis, tetapi audiens target dari aplikasi web itu hanya pengguna Internet Explorer.
Saya akan mengatakan bahwa itu semua tergantung pada kebutuhan Anda. Jika Anda ingin memastikan bahwa halaman Anda berfungsi dengan baik di setiap browser, hindari IFRAME. Jika Anda menargetkan audiens yang sempit dan terkenal (mis. Di Intranet lokal) dan Anda melihat manfaat menggunakan IFRAME maka saya akan mengatakan tidak masalah untuk melakukannya.