Bagi saya iframe adalah kejahatan murni (yah, mungkin tidak begitu murni). Mereka sepertinya membuat banyak masalah. Ya, seluruh situs Anda akan dimuat sekali dan kemudian Anda hanya dapat memuat satu halaman. Tetapi orang-orang menemukan AJAX untuk tujuan ini.
Salah satu masalah terbesar yang saya temukan iframe
adalah saya tidak dapat menempelkan tautan ke salah satu subhalaman, karena URL tidak pernah berubah (ya, saya tahu ada solusi untuk ini). Hal kedua, mesin pencari web mungkin mengalami masalah untuk mengindeks situs itu dengan benar.
Terkadang aksesibilitas situs ini lebih buruk dan beberapa browser bahkan dapat menampilkannya dengan tidak semestinya.
Ada cara yang lebih baik untuk mendesain tata letak tanpa (i) bingkai. Setiap hari saya dapat melihat seseorang mengajukan pertanyaan SO, seperti "Bagaimana cara mengakses iframe dengan jQuery?".
Lantas apa saja sih keunggulan iframe? Apa alasannya untuk tetap menggunakannya? Saya hanya ingin tahu mengapa :)
(karena ini bukan pertanyaan nyata, ini adalah CW)
Jawaban:
Saya dapat memikirkan 2 alasan (saat ini) mengapa orang masih menggunakan iframe daripada AJAX:
1) Iframe menghindari kebijakan asal lintas domain (gambar, skrip, dan gaya tidak). Ini dapat berguna untuk menarik situs / konten dari nama domain lain dengan relatif aman. Pada dasarnya, ini memungkinkan keuntungan untuk dapat menampilkan data secara visual dari domain lain tanpa membiarkan mereka menginjak-injak halaman Anda dengan akses tak terbatas (seperti yang dapat dilakukan JSONP).
2) Anda dapat memuat berbagai jenis sumber daya dari dalam iframe, bukan hanya jenis mime tertentu (Anda relatif terbatas pada application / javascript, application / x-javascript, text / css, text / xml, image / png, image / jpeg, image / gif dengan skrip, XHR, gambar, dan sumber). Misalnya, jika saya ingin menunjukkan PDF kepada Anda, saya dapat membuka iframe dan membiarkan plugin Adobe Reader menunjukkan file itu kepada Anda. Selain itu, di domain yang sama, jika saya ingin menyalurkan skrip, gaya, dan gambar secara bersamaan (sebaris pada halaman, gambar harus berupa URI data), saya dapat melakukannya dengan iframe (dan jika itu sama domain, port, dan protokol saya juga dapat mengaksesnya dengan JavaScript).
Tahukah Anda bahwa Gmail adalah sekumpulan iframe? Bagian yang terlihat hanyalah pemosisian yang cerdas. Selain itu, banyak penerapan OAuth (Twitter, Facebook, Google, Yahoo!) biasanya menggunakan iframe untuk mengaitkan pengguna di domain mereka dengan URL otentikasi yang berhasil (setelah pengguna masuk).
sumber
<embed src="http://www.pdf995.com/samples/pdf.pdf" type="application/pdf">
IFRAME digunakan untuk menyematkan dan memisahkan konten pihak ketiga ke dalam situs web.
Sebagian besar solusi periklanan web didasarkan pada iframe - karena memberikan keamanan (kebijakan lintas domain) dan persegi panjang terisolasi di layar yang dapat dikelola sepenuhnya oleh konten dan skrip pihak ketiga (kasus penggunaan yang umum adalah iklan).
Penggunaan modern IFRAMES lainnya adalah pengelolaan riwayat (solusi umum tombol kembali) dari aplikasi AJAX.
FRAME adalah versi buruk dari IFRAMES. Penggunaannya menurun.
sumber
Jika pengguna menonaktifkan javascript, iframes akan berfungsi saat ajax tidak. Ini tidak keluar dari pertanyaan, mengingat orang menggunakan hal-hal seperti NoScript .
sumber
<form>
memposting ke target).XMLHttpRequest
.Saya menggunakannya di situs web ajax, ketika saya perlu mengunggah file tanpa memuat ulang halaman.
sumber
Saya masih melihat iframe digunakan di perusahaan besar di mana mereka menyediakan satu tanda yang menyuntikkan informasi header tentang pengguna yang diautentikasi yang kemudian diteruskan, melalui iframe, ke aplikasi sebenarnya. Karena "portal" yang mengelilingi iframe menangani semua detail autentikasi spesifik, aplikasi di belakangnya tidak perlu menerapkan masing-masing untuk itu, mempermudah tim pengembangan dan memiliki satu tempat untuk memantau dan menyesuaikan detail autentikasi pengguna.
sumber
Ada banyak alasan teknis untuk menggunakannya (terutama masalah keamanan yang disebutkan oleh Dan Beam).
Yang tidak boleh Anda lakukan adalah menggunakan iframe "like frames", melakukan navigasi ke halaman baru dengan memperbarui iframe saja. Seperti yang Anda katakan, ini mencegah navigasi agar tidak dapat di-bookmark / ditautkan, merespons tombol navigasi normal, dan menyediakan kemampuan tautan yang berguna seperti buka-dalam-tab-baru.
Tapi itu tidak hanya terjadi pada iframe. Anda dapat melihat lebih banyak halaman di mana navigasi dilakukan dengan mengambil konten baru
XMLHttpRequest
dan menuliskannya ke div konten utamainnerHTML
. Seringkali ini dilakukan dengan jQueryload()
dan animasi slidey pintar-pintar. Ini merusak navigasi sama buruknya dengan iframe-used-as-frame, atau memang old-school framesets. Sungguh memalukan begitu banyak penulis web yang menggunakan taktik ini dan percaya bahwa itu adalah metodologi desain web super-modern, padahal sebenarnya itu hanya tampilan baru pada rangkaian bingkai yang dibenci kemarin.Anda dapat mengatasinya dalam kedua kasus, tetapi itu berarti Anda harus menyimpan kondisi tampilan di bagian
#
pengenal fragmen dan mendukung navigasi hash yang tepat, yang tidak sepele. Meskipun demikian, Anda masih memiliki masalah dengan agen non-JS seperti mesin pencari; Anda akhirnya harus memiliki navigasi berbasis?
dan paralel#
untuk mendukung keduanya. Ini menyakitkan dan paling tidak repot.sumber
Frameset sudah usang sejak HTML 5, dan terkadang Anda perlu memiliki bingkai dengan situs lain di dalam situs. AJAX juga hanya bisa melakukan banyak hal. Coba unggah file ke situs di domain lain melalui https tanpa iframe. AJAX tidak akan membantu Anda di sana.
sumber
Selain alasan lain, saya memiliki satu penggunaan spesifik
iframe
dalam aplikasi saya. Sayangnya, browser target dalam kasus saya adalahInternet Explorer 6
. Saya perlu memiliki footer dan header yang diperbaiki di halaman web saya. Bagian utama dari halaman ini dapat di-scroll.Namun, ada bug di IE6 di mana saya tidak dapat menampilkan
div
elemen di atasselect
elemen menggunakanz-index
properti CSS. Jadi, saya perlu membuatiframe
yang akan digunakan sebagai hack untuk menghindari masalah ini.Tentu saja, ini adalah penggunaan yang sangat spesifik
iframe
dan satu-satunya perhatianIE6
...sumber
Editor Javascript WYSIWYG menggunakan iframe, karena itu cara termudah dan terbaik untuk membuatnya. Misalnya TinyMCE menggunakannya:
http://tinymce.moxiecode.com/
sumber
Saya sedang membangun jejaring sosial dan saya melihat iframe berguna untuk widget untuk ditempatkan di situs web orang lain agar ditampilkan seperti profil mini atau diintegrasikan dengan konten di server jarak jauh. Sepertinya cara paling sederhana untuk membangun ini. Saya tahu beberapa widget menggunakan JavaScript. Juga dengan metode iframe sesinya sama dengan mengunjungi situs seperti biasa, sangat bagus untuk tombol suka.
sumber
Banyak Editor Teks Terformat (misalnya TinyMCE, HTMLArea) diimplementasikan sebagai iframe.
sumber
iFrame tidak masalah untuk beberapa kasus, karena X-domain-request, atau memposting data ke sumber melalui parameter. Tetapi ketika saya ingin mengakses data di seluruh domain, saya lebih suka menggunakan file CSS - mereka dapat menerima params, mengatur cookie, menambahkan konten ke halaman (: sebelum &: setelah) dan memberikan umpan balik visual.
sumber