Mengapa frame tidak digunakan lagi dalam HTML5, tetapi bukan iFrames?

67

Mengapa frame tidak digunakan lagi dalam HTML5, tetapi bukan iFrames? Lagi pula, hampir tidak ada perbedaan di antara keduanya. Dalam banyak kasus menggunakan salah satu dari mereka akan memberikan hasil yang sama (maafkan saya jika saya salah)?

Roc Martí
sumber
terima kasih untuk tautannya, tetapi apa perbedaan kecil di antara keduanya, bahwa iframe tidak ditinggalkan.
1
Karena bingkai adalah ide yang buruk dari awal tetapi iframe memang memiliki beberapa kasus penggunaan yang sah?
GordonM

Jawaban:

81

Ada beberapa kesalahpahaman dalam posting Anda. Pertama, framedan framesetelemen tidak ditinggalkan dalam HTML5, mereka usang (yaitu, mereka telah dihapus seluruhnya).

Kedua, elemen framedan framesettidak sama dengan iframeelemen, juga tidak memberikan hasil yang sama:

  • The framesetelemen menggantikan elemen body di halaman sebagai sarana untuk memasukkan model dokumen yang berbeda untuk halaman web: mereka buruk untuk kegunaan dan aksesibilitas, dan apa yang mereka dimaksudkan untuk mencapai telah benar-benar digantikan oleh CSS dan pengembangan server-side di mana-mana.

  • The iframeelemen, di sisi lain, tidak menggantikan tubuh halaman. Ini bertindak sebagai sarana untuk memasukkan konteks penelusuran baru yang tertanam dalam blok konten. Itu tidak menderita dari kegunaan yang sama atau masalah aksesibilitas seperti model frameset dan digunakan hampir di mana saja kita harus menyertakan konteks penelusuran yang tertanam (widget menjadi contoh paling produktif). 1

Dalam iframeHTML5 juga mengambil fitur tambahan yang dapat di- sandbox , memungkinkan dokumen induk untuk memutuskan apa yang akan dieksekusi di dalamnya. Ini memungkinkan beberapa ukuran keamanan untuk dokumen induk (dan pengunjung ke dokumen induk) saat menyematkan konten yang tidak tepercaya.


Catatan

Catatan 1: the objectelemen agak tumpang tindih dengan iframeelemen, tetapi memiliki model konten yang berbeda (yang dimaksudkan terutama untuk plugin), telah menetapkan sendiri dari peringatan, dan tidak memiliki sandboxing atribut yang iframeelemen memiliki.


sumber
8
Mengapa elemen frameset buruk untuk "kegunaan" dan "aksesibilitas" tetapi elemen iframe tidak?
meriton - saat mogok
18
@meriton Frameset membuat halaman dari banyak dokumen dengan prioritas yang sama: ini menyebabkan tantangan bagi pembaca layar yang tidak tahu dokumen mana yang menjadi fokus pada waktu tertentu. Elemen iframe, di sisi lain, hanya tertanam ke dalam satu halaman: tidak ada bedanya dengan memiliki gambar yang disematkan.
9
Tantangan bagi pembaca layar: Orang tunanetra yang saya ajak bicara mengatakan bahwa mereka lebih suka navigasi yang terjebak dalam bingkai yang terpisah (bukan iFrame) karena mereka dapat mengabaikannya dan hanya membacanya kepada mereka ketika mereka mau. Penyebab sebenarnya untuk pembaca layar adalah Javascript dan AJAX yang membuat halaman benar-benar tidak dapat digunakan dengan pembaca layar saat ini (well, info saya berusia sekitar 10 bulan). Pengalaman pribadi saya dengan pembaca layar mendukung ini.
GlenPeterson
4
Saya bertanya-tanya apakah banyak pernyataan aksesibilitas 2005 yang sering dikutip ulang belum terlambat untuk pembaruan. Terima kasih atas perbedaan pendapatnya.
Erik Reppen
1
@ GlenPeterson efek yang sama tanpa elemen bingkai dapat dicapai dengan menggunakan CSS untuk membuat elemen blok tetap di viewport. Itu BAGAIMANA harus dilakukan jika Anda ingin navigasi semacam itu. Itu lebih masuk akal.
netrox
8

Bingkai (frameset) bertindak sebagai dokumen. Itu dihapus karena merusak struktur dan navigasi dokumen HTML. Misalnya. Anda memiliki tautan di satu bingkai, konten di yang lain, Anda tidak dapat membuka tautan dari halaman di dalam jendela baru, Anda tidak dapat menautkan ke sub-halaman tertentu, dll.

Di lain pihak iframe tidak akan merusak apa pun jika digunakan dengan benar karena dimaksudkan untuk konten kotak pasir (mis. Iklan).

Slawek
sumber
7

Framesets sering digunakan dengan cara di mana mereka melanggar prinsip dasar Web - bahwa setiap dokumen memiliki satu URL. Hal ini menyebabkan masalah dengan penautan, bookmark, mesin pencari, dll.

Penggunaan khas dari frameset akan menjadi bingkai di bagian atas dengan logo atau header, bingkai di samping dengan menu, dan bingkai konten. Tapi mesin pencari mengindeks halaman individual, jadi ketika Anda menemukan beberapa halaman di Google, itu akan terhubung langsung ke halaman konten tanpa frameset, sehingga Anda kehilangan navigasi. Masalah dengan tautan dan bookmark adalah Anda biasanya ingin menautkan atau menandai halaman konten tertentu di dalam frameset, tanpa kehilangan frameset itu sendiri. Tidak ada cara mudah untuk melakukan itu.

Alasan bingkai menjadi populer di tempat pertama adalah karena mereka memungkinkan header dan menu diposisikan secara statis dengan area konten bergulir. Tetapi itu dapat dicapai dengan lebih mudah dengan CSS saat ini. Selain itu, bingkai memungkinkan Anda menggunakan elemen umum seperti logo dan menu pada banyak halaman tanpa menggunakan pengkodean sisi server. Ini merupakan keuntungan pada saat pengkodean sisi server sangat membosankan dan rentan kesalahan (yaitu skrip CGI), dan banyak host tidak mengizinkan skrip sisi server sama sekali. Hari ini dengan Content Management Systems (CMS) dan platform sisi server yang lebih baik, ini jauh lebih baik ditangani di sisi server.

Jadi pada dasarnya tidak ada keuntungan menggunakan frameset, hanya banyak masalah.

IFrames dapat digunakan dengan cara yang sama seperti frameset digunakan, dan dalam kasus itu mereka juga mengarah ke masalah yang sama. Tetapi ada juga banyak penggunaan sah iframe yang tidak mengarah pada masalah yang sama.

JacquesB
sumber