Yanıtlar:
Tüm teknolojilerde olduğu gibi iniş ve çıkışları vardır. Düzgün geliştirilmiş bir siteyi dolaşmak için bir iframe kullanıyorsanız, o zaman elbette kötü bir uygulamadır. Ancak bazen bir iframe kabul edilebilir.
Bir iframe ile ilgili ana sorunlardan biri yer imleri ve gezinme ile ilgilidir. Bir sayfayı içeriğinizin içine gömmek için kullanıyorsanız, bence bu iyi. Bir iframe bunun için.
Ancak iframe'lerin de istismar edildiğini gördüm. Hiçbir zaman sitenizin ayrılmaz bir parçası olarak değil, bir site içindeki bir içerik parçası olarak kullanılmamalıdır.
Genellikle, iframe olmadan yapabilirseniz, bu daha iyi bir seçenektir. Eminim buradaki diğerlerinin daha fazla bilgi veya daha spesifik örnekleri olabilir, hepsi çözmeye çalıştığınız soruna geliyor.
Bununla birlikte, HTML ile sınırlıysanız ve PHP veya ASP.NET gibi bir arka uca erişiminiz yoksa, bazen bir iframe tek seçeneğinizdir.
window.postMessage()
, örneğin işbirlikçi iframe otomatik yeniden boyutlandırma uygulamak için hala iletişim kurabilir .
Kötü bir uygulama değil, sadece başka bir araç ve esneklik katıyorlar.
Standart bir sayfa öğesi olarak kullanmak için ... iyidir, çünkü içeriği birkaç sayfaya ayırmanın basit ve güvenilir bir yoludur. Özellikle kullanıcı tarafından oluşturulan içerik için, iç sayfaları " iframe
zayıf bir biçimlendirme " içine yerleştirmek ana sayfayı etkilemediğinden faydalı olabilir . Dezavantajı, birden fazla kaydırma katmanı (tarayıcı için, diğeri için iframe
) tanıtırsanız, kullanıcılarınızın hayal kırıklığına uğrayacağıdır. Adzm'ın dediği gibi, iframe
birincil gezinme için bir kullanmak istemezsiniz , ancak bunları bir videonun veya başka bir medya dosyasının gömülme biçimine eşdeğer bir metin / işaretleme olarak düşünün.
Komut dosyası arka plan olayları için, seçim genellikle gizli iframe
ve XmlHttpRequest
geçerli sayfa için içerik yükleme arasındadır . Aradaki fark, iframe
bir sayfanın yük oluşturmasıdır, böylece çoğu tarayıcıda tarayıcı önbelleğinde ileri ve geri hareket edebilirsiniz. XmlHttpRequest
Her yerde kullanan Google'ın, iframe
belirli durumlarda bir kullanıcının tarayıcı geçmişinde ileri ve geri hareket etmesine izin vermek için de s kullandığına dikkat edin .
Bunların dezavantajlarını anlamadan kullanmak kötü bir uygulamadır. Adzm'ın gönderisi onları çok iyi özetliyor.
Flipside, gmail, bazı serin özellikleri (otomatik dosya yükleme gibi) için arka planda iFrames'i yoğun bir şekilde kullanır. İFrames'ın sınırlamalarının farkındaysanız, bunları kullanma konusunda herhangi bir sıkıştırma hissetmeniz gerektiğine inanmıyorum.
Onlarla birçok durumda çalıştıktan sonra, gerçekten iframe'lerin goto ifadesinin web programlama eşdeğeri olduğunu düşünmeye başladım. Yani, genellikle kaçınılması gereken bir şey. Bir site içinde biraz yararlı olabilirler. Ancak, siteler arası, neredeyse en basit içerikten başka bir şey için neredeyse her zaman kötü bir fikirdir.
Olasılıkları düşünün ... Parametreli içerik için kullanılıyorsa, bir arayüz oluşturdular. Ve profesyonel bir sitede, bu arayüz bir SLA ve sürüm yönetimi gerektirir - bu da çevrimiçi olmak için hemen her zaman göz ardı edilir.
Etkin içerik için kullanıldığında - komut dosyasını barındıran çerçeveler - (farklı) alanlar arası komut dosyası kısıtlamaları vardır. Bazıları hacklenebilir, ancak nadiren tutarlı bir şekilde. Çerçeveli içeriğinizin etkileşimli olması gerekiyorsa, bunu çerçevenin ötesinde yapmakta zorlanacaktır.
Lisanslı içerikle kullanılırsa, katılımcı siteler, yetkilendirme bilgilerinin toplantı sahipleri arasında bant dışına taşınması gereği ile yükümlüdür.
Bu nedenle, bir site içinde zaman zaman yararlı olsa da, bunlar mashuplar için uygun değildir. Gerçek portallara ve portletlere bakmak çok daha iyi. Daha da kötüsü, her web amatörünün sevgilisi - birçok teknik yöneticisi birçok soruna bir çözüm olarak onlara el koydu. Aslında daha fazlasını yaratırlar.
Deneyimlerime dayanarak, iframe için olumlu bir taraf , üçüncü taraf kodlarını çağırırken, bir Document.write();
komut içeren bir javascript çağrılmasını içerebilir . Bildiğiniz gibi, bu komutlar nasıl ayrıştırıldığından (DOM Ayrıştırıcı vb.) Zaman uyumsuz olarak çağrılamaz. Bunun bir örneği http://sourceforge.net/projects/phpadsnew/ Phpadsnews için birden fazla çağrı yapıldığı ve sitenin farklı işlemeye geçmeden önce yanıtı beklediği için sitemizi hızlandırmak için iframe'ler kullandım. Sayfanın bazı bölümleri. iframe ile sitenin sayfanın diğer bölümlerini oluşturmasına izin verdim ve yine Document.write()
de phpad'lerin komutunu eşzamansız olarak çağırıyorum. Önleme ve js kilitleme.
İframe millet için kesinlikle kullanır. Hava durumu ağları widget'ını sayfanıza başka nasıl yerleştirirsiniz? Diğer tek yol XML'lerini alıp ayrıştırmaktır, ancak elbette ilgili hava grafiklerini atmak için koşullara ihtiyacınız var ... gerçekten buna değmez, ancak zamanınız varsa daha temiz.
Orijinal çerçeve kümesi modeli (Çerçeve kümesi ve Çerçeve öğeleri) kullanılabilirlik açısından çok kötüydü. IFrame vas, orijinal çerçeve seti modeli kadar problemi olmayan ancak dezavantajı olan daha sonraki bir buluş.
Kullanıcının IFrame içinde gezinmesine izin verirseniz, bağlantılar ve yer işaretleri beklendiği gibi çalışmaz (çünkü dış sayfanın URL'sini işaretlediğinizden, iframe'in URL'sini işaretlemediğiniz için).
Ana sayfanız HTTP protokolüne yüklendiğinde ve sayfanızın bazı bölümlerinin HTTPS protokolünde çalışması gerektiğinde, iFrame jsonp ellerini yenebilir.
Özellikle, dataType yerel olarak json değilse ve sunucuda json'a çevrilmesi ve istemcide örneğin karmaşık html'ye çevrilmesi gerekiyorsa.
Yani hayır - iFrame kötü değil.
Onlar kötü değil, ama aslında yararlı. Bir süre önce twitter feed'imi gömmek zorunda kaldığım büyük bir sorun yaşadım ve md'nin aynı sayfada yapmasına izin vermedi, bu yüzden farklı bir sayfaya ayarladım ve bir iframe olarak koydum.
Ayrıca tüm tarayıcılar (ve telefon tarayıcıları) destekliyorlar. Doğru kullandığınız sürece kötü bir uygulama olarak kabul edilemezler.
Kullanıcılarınızın internet bağlantısının hızından veya iframe'in içeriğinden bağımsız olarak iframe'lerin sayfanızın indirdiği hızda küçük (0,3 sn veya daha fazla) ancak gözle görülür bir yavaşlamaya neden olacağını belirtmek gerekir. Bu, yerel olarak test ederken göreceğiniz bir şey değil. Aslında, bu bir sayfaya eklenen herhangi bir öğe için geçerlidir, ancak iframe'ler daha kötü görünüyor.
IFRAME'lerin dinamik bağlam menüleri oluşturmanın kolay bir yolu olarak çok başarılı bir şekilde uygulandığını gördüm, ancak bu web uygulamasının hedef kitlesi yalnızca Internet Explorer kullanıcılarıydı.
Her şeyin gereksinimlerinize bağlı olduğunu söyleyebilirim. Sayfanızın her tarayıcıda eşit derecede iyi çalıştığından emin olmak istiyorsanız, IFRAME'lerden kaçının. Dar ve iyi bilinen bir kitleyi hedefliyorsanız (ör. Yerel Intranet'te) ve IFRAME'leri kullanmanın bir faydasını görürseniz, bunu yapmanın uygun olduğunu söyleyebilirim.