Çerçeveler neden HTML5'te kullanımdan kaldırıldı, ancak iFrame'ler kullanılmadı?


67

Çerçeveler neden HTML5'te kullanımdan kaldırıldı, ancak iFrame'ler kullanılmadı? Sonuçta, ikisi arasında neredeyse hiçbir fark yoktur. Bunlardan birini kullanarak birçok durumda aynı çıktıyı verir (yanılıyorsam afedersiniz)?



bağlantı için teşekkürler, ancak ikisi arasındaki küçük fark nedir, bu iframe itiraz edilmedi.

1
Çünkü çerçeveler en baştan korkunç bir fikirdi, ancak iframe'lerin meşru kullanım davaları var mı?
GordonM

Yanıtlar:


81

Görevinizde birkaç yanlış anlama var. İlk olarak, HTML5'te frameve framesetöğeleri kullanımdan kaldırılmaz, eskidirler (yani tamamen kaldırıldılar).

İkincisi, frameve framesetelemanları elemanla aynı şey değildir iframe, aynı çıktıyı vermezler:

  • framesetOnlar kullanılabilirlik ve erişilebilirlik için kötüsün, ve ne tamamen CSS ve her yerde sunucu tarafı geliştirme yerini almış gerçekleştirmek için tasarlanmıştır: eleman vücut web sayfaları için farklı bir belge modeli dahil etmek için bir araç olarak sayfalarında eleman değiştirir.

  • iframeEleman, diğer taraftan, bir sayfanın gövdesini yerine geçmez. Bir içerik bloğuna gömülü yeni bir tarama bağlamı eklemek için bir araç olarak işlev görür. Çerçeve kümesi modeliyle aynı kullanılabilirlik veya erişilebilirlik sorunlarından muzdarip değildir ve gömülü bir tarama bağlamı içermek için ihtiyaç duyulan hemen hemen her yerde kullanılır (widget'lar en üretken örnektir). 1

iframeHTML5'teki da edilebilmesi de ek özellikler alır korumalı ebeveyn belgesinin, içinde çalıştırılmaktadır karar için izin. Bu, güvenilmeyen içeriği gömerken ana belge (ve ana belgeye gelen ziyaretçiler) için bir miktar güvenlik önlemi alınmasını sağlar.


notlar

Not 1:object eleman , eleman ile bir şekilde örtüşür iframe, ancak farklı bir içerik modeline sahiptir (temel olarak eklentiler için tasarlanmıştır), kendi uyarılar kümesine iframesahiptir ve öğenin sahip olduğu kumlama özellikleri yoktur .


8
Çerçeve kümesi öğeleri neden "kullanılabilirlik" ve "erişilebilirlik" için kötüdür ancak iframe öğeleri değildir?
meriton - grevde

18
@meriton Çerçeve kümesi, aynı önceliğe sahip birden fazla belgeden bir sayfa oluşturur: bu , belirli bir zamanda hangi belgeye odaklanacağını bilmeyen ekran okuyucuları için zorluklara neden olur . Diğer yandan, iframe elemanları tek bir sayfaya gömülüdür: gömülü bir görüntüden farklı değildir.

9
Ekran okuyucular için zorluklar: Herkesin konuştuğu kör insanlar, navigasyonu ayrı bir çerçeveye (iFrame değil) sıkışıp kalmayı tercih ettiklerini, çünkü bunu görmezden gelebildiklerini ve sadece istedikleri zaman okumasını istediklerini söylediler. Ekran okuyucular için asıl suçlu olan sayfa Javascript ve AJAX'dır. Ekran okuyucularıyla olan kişisel deneyimim bunu destekliyor.
GlenPeterson

4
2005'in pek çok kişinin talep ettiği erişilebilirlik iddialarının bir güncelleme için gecikme yapıp yapmadığını merak ediyorum. Bu konuda anlaşmazlık için teşekkür ederiz.
Erik,

1
@GlenPeterson, blok elemanını görünüm çerçevesine sabitlemek için CSS kullanılarak çerçeve elemansız aynı etki elde edilebilir. Bu tür bir navigasyon istiyorsanız, bu nasıl yapılmalıdır. Daha mantıklı.
netrox

8

Çerçeveler (çerçeve kümesi) belge işlevi görür. HTML belgelerinin yapısını ve gezinmesini bozduğu için kaldırıldı. Örneğin. bir çerçevede bağlantılarınız var, diğerinde içerik var, sayfadaki bağlantıyı yeni bir pencerede açamazsınız, belirli bir alt sayfaya bağlanamazsınız, vb.

Öte yandan, iframe'ler doğru kullanıldığında hiçbir şeyi bozmaz, çünkü bunlar içeriğe sandbox amaçlıdır (ör. Reklamlar).


7

Çerçeveler genellikle Web'in temel ilkesini bozacak şekilde kullanılır - her belgenin tek bir URL'si vardır. Bu bağlantı, yer imleri, arama motorları vb. Sorunlara yol açar.

Bir çerçeve kümesinin tipik kullanımı, üstünde logo veya başlık bulunan bir çerçeve, yanında menü bulunan bir çerçeve ve bir içerik çerçevesi olacaktır. Ancak arama motorları tek tek sayfaları indeksler, bu nedenle Google’da bir sayfa bulduğunuzda, çerçeve kümesi olmadan doğrudan içerik sayfasına bağlanır, böylece gezinmeyi kaybedersiniz. Bağlantılar ve yer imleri ile ilgili sorun, genellikle çerçeve kümesinin kendisini kaybetmeden, çerçeve kümesinin içindeki belirli bir içerik sayfasını bağlamak veya yer imlerine eklemek isteyebilirsiniz. Bunu yapmanın kolay bir yolu yok.

Çerçeve kümelerinin ilk başta popüler olmasının nedeni, statik konumlandırılmış bir başlığa ve kayan içerik alanına sahip bir menüye izin vermeleriydi. Ancak bu, bugün CSS ile çok daha kolay bir şekilde gerçekleştirilebilir. Ayrıca, herhangi bir sunucu tarafı kodlaması kullanmadan birden fazla sayfada logolar ve menüler gibi ortak öğeleri kullanmanıza izin verir. Bu, sunucu tarafı kodlamanın sıkıcı ve hataya açık (örneğin CGI betikleri) olduğu ve birçok ana bilgisayarın sunucu tarafı komut dosyası oluşturmasına izin vermediği bir zamanda bir avantajdı. Bugün İçerik Yönetim Sistemleri (CMS) ve daha iyi sunucu tarafı platformları ile sunucu tarafında daha iyi ele alınmaktadır.

Bu yüzden temel olarak bir çerçeve kümesi kullanmanın bir avantajı yok, sadece bir çok problem var.

IFrame'ler , çerçeve setlerinin kullanıldığı şekilde kullanılabilir ve bu durumda da aynı sorunlara yol açabilir. Ancak aynı sorunlara yol açmayan birçok iframe kullanımı da vardır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.