Neden istemci tarafı HTML etiketi içermiyor?


18

Geçen gün başka bir programcının bana sorduğu bir soru vardı. Aynı şeyi merak ettiğini hatırlıyorum (çok uzun zaman önce). Tarayıcı tarafı dahil etme etiketi neden hiç dikkate alınmadı? Yoksa öyle miydi?

Özellikle tarayıcıya diğer kaynaklardan ek HTML eklemesi talimatını veren bir etiketle. örn <include src="http://server/foo/bar.html">. Birçok kişi javascript çağrıları yapacak ve innerHTMLaynı işlemi gerçekleştirmek için dolduracaktır , bunun dışında bir javascript motoru tarayıcı tarafından gerçekleştirilebilir.

Bu acı olurdu iç içe olması <HTML>ler <BODY>ler (yani) ama biz her yerde yine o yönünü düşünmek zorundayız.


Harici varlıklar size bunu vermiyor mu?
Peter Taylor

Transkripsiyon, 60'lı yıllarda buluşundan bile hipermetnin temel bir özelliği olarak kabul edildi. Eminim bu kabul edildi ...
Alex Feinman

Yanıtlar:


12

Dünyadaki ( yalnızca Netscape 4 ) layerve ilayeretiketleri hatırlayan son kişi miyim ?

Netscape 4 de izindiv etiketi bir olması srcaynı şeyi başarılı niteliği.

Netscape onları W3C'ye sundu ve onları dahil etmemeyi tercih etti - iframebunun yerine kullanın.


Gerçekten NS4'ü hatırlıyorum ama bu özellikleri hatırlamıyorum. Çok kötü, hala çapraz tarayıcı javascript BS çok kaydedecek içerik.
Jé Queue

İlk ISS olmayan e-posta adresimden birinin ihatenetscape.com'da ücretsiz bir hesap olduğu NS4'ten nefret ediyorum. Ah, iyi zamanlar: D
wildpeaks

Notlar document, aynı Başlangıç ​​Politikasına tabi olan ayrı bir nesneye sahip olduklarından, istemci tarafında pek bir istemci tarafı değildi ; etkin bir şekilde konumlandırılabilir bir iframe'di.
bobince

14

Tarayıcı tarafı dahil etme etiketi neden hiç dikkate alınmadı? Yoksa öyle miydi?

Www-html listesinde ilk günlerde Server Side Includes'i henüz çalışmayan her acemi web yazarı tarafından kesinlikle talep edildi. Ancak o günlerde W3 web yazarı baskısını tamamen görmezden geldi.

Siteler arası dahil edilmeye izin verilmiş olsaydı, bu bir güvenlik felaketi olurdu. Kullanıcının bankasından bir sayfa alıp ondan içerik okuyabilirsiniz. (Başlangıçta, DOM scripting sınırlıydı, ama yine de okunan olabilirdi document.links, document.images, komut dosyası işlevlerinden sen ne ithal içerikle gibi yapabilirsiniz O zamandan beri vs Hedef sayfaya, düştü.)

Siteler arası dahil edilmeye izin verilmezse ... özelliğin sunucu tarafı içeriklerine göre herhangi bir avantajı olmazdı. İstemcinin sunucunun daha iyi başa çıkabilmesi için daha yavaş çalışması olurdu. Aksine <iframe>, bir içerme sayfanın yüklenmesini engellemelidir. SGK'lar her açıdan daha üstün olurdu.


5
Aslında, şablonlar (veya üstbilgi / altbilgi dahil) sayfadan sayfaya değişme eğilimi göstermediğinden, istemci (veya bir proxy) daha verimli bir şekilde önbellekleyebilir, yani kullanıcı sayfanın bir kısmını en azından bazılarını görebilir sunucu tarafı işleme devam ediyor.
Alan Pearce

1
Sunucudan çok daha fazlasını yapar. Neden sayfa yüklemesini engellemesi gerektiğinden emin değilim, zaman uyumsuz içerik dolgusu ile tam sayfa yüklemesine izin vermiş olabilir. Tabii ki tarayıcılar sadece kaynak sunuculardan çekime izin vermek veya alan adı verilen bir DOM'a izin vermekle sınırlı olabilir.
Jé Queue

Güvenlik felaketinin ne olduğunu anlamıyorum. Şu anda sunucu tarafında bir banka sayfasını okuyabilir ve başka bir sayfaya tükürebilirim - bu bir felaket midir? Belki, ama kesinlikle güvenlikle ilgili değil. Güvenlik felaketi, farklı bir alandan gelen çerezleri okumak olacaktır. Bu istemci tarafı içermez sunucu tarafı bir ile tam olarak aynı olurdu. Burada herhangi bir sorun görmüyorum.
serg

Sunucu tarafında bir banka sayfası getirmeyi deneyebilirsiniz, ancak isteğinizin kimliği doğrulanmayacaktır, böylece sulu bilgileri indiremezsiniz. İstemci tarafından gelen bir istek çerezleri ve HTTP kimlik doğrulama jetonlarını içerir; böyle bir talepten gelen yanıtı okuyabilirseniz, kullanıcıyı tamamen taklit edebilirsiniz.
bobince

@bobince: İstemci tarafındaki isteğin çerezleri ve HTTP kimlik doğrulama jetonlarını içermesi için herhangi bir neden var mı? İstemci tarafı içerdikleri için göreceğim birincil kullanım senaryosu, statik sayfa içeriğinin önbelleğini iyileştirmek olacaktır. On altı sayfanın tümü aynı üstbilgi ve altbilgiyi içeriyorsa, istemci tarafı içerme kullanmak ilk sayfayı yüklemek için gereken süreyi artıracak, ancak geri kalan on beşi yüklemek için gereken süreyi azaltacaktır.
İçerme

10

Onlar yaptı. <frameset>Etiket oldu . Kısa bir süre sonra <iframe>etiketi eklediler .

Sunucu tarafındaki desteklenen ilk web sunucularının çoğu, bu nedenle, aynı işlevselliğin çerçevelerle de kullanılabildiği düşünüldüğünde, istemci tarafı metin içeriğinin gereksiz olduğu düşünülüyordu.


4
Aslında çerçeveler dahil olmaktan çok farklı bir amaca hizmet etmez. Ayrıca, özellikle nesne seti boyutunda iframe'lerle ilgili kısıtlamalar kesinlikle yerini almayı düşünemezdi.
Jé Queue

5
Kabul etmiyorum - Bence bu tam olarak çerçevelerin yaptığı şey. Daha fazla HTML eklemek dışında kareler için başka neler var?
Jaco Pretorius

5
Çerçeveler doğrudan değil, çerçevelere HTML ekler - bu farktır.
mbq

4
@Xepoch: ... ile <iframe>. Bunun için . Gerçekten bir <div>ile çok farklı değiloverflow:auto;
greyfade

3
<iframe> öğesi temel olarak "belirtilen html belgesini yükle ve buraya yapıştır" der. Belgenin bir javascript çağrısına değil, hemen yüklenmesini istiyorsanız ajax yerine bunu seçersiniz ... Çerçeveler HTML'nin pencereleme düzeni DEĞİLDİR. Div, p, br - bunların hepsi düzen için kullanılan öğelerdir. Düzen için çerçeveler kullanmazsınız (ya da hiçbir şekilde kullanmamalısınız).
Jaco Pretorius

3

Nesne hala bir çerçevede oluşturuluyor ve "verilere" DOM ​​erişiminiz yok. Geliştiricilere yıllar önce verilmesi gereken şey, basit bir etikete sahip parçacıkları dahil etmenin bir yoludur. Bu etiket etki alanı korumalı alanı kısıtlamalarına sahip olsa bile, özellikleri bölümlere ayırmak, bakımı iyileştirmek ve tarayıcı önbelleklemesinden yararlanmak oldukça yararlı olacaktır.

Bunu yapan iyi jquery eklentileri ve çok sayıda sunucu tarafı komut dosyası olduğunu biliyorum, ancak böyle bir etiketi desteklememek için iyi bir neden yok. IMO iyi bir soru "Neden hiçbir istemci tarafı etiketi içermiyor?"

Eğer jquery gibi burada iyi bir istemci tarafı dahil script: inc: Bir süper küçük istemci tarafı dahil JavaScript jQuery eklentisi


Cevabınız kafadaki çiviye çarpmış gibi görünen tek cevaptır. C'de #include gibi bir şey mi düşünüyorsunuz? Bu tam olarak "istemci tarafı dahil" anlamına gelir - bir HTML belgesi içine tümleşik belge içeriği olarak rastgele HTML parçacıkları (tüm HTML belgeleri yerine) dahil etmek için bir tesis. Ön ayrıştırma aşaması yerine HTML'nin ayrılmaz bir özelliği olarak tasarlanabilse de, sorucunun önerdiği <include src = "..."> sözdizimi buna tam olarak uyuyor.
Stewart

Şimdi eklemeyle ilgili sorun geriye dönük uyumluluk olacaktır. Tabii ki, bu neden HTML'nin orijinal tasarımına dahil edilmediğini açıklamıyor.
Stewart

Alternatif olarak daha genel olarak SGML / XML'in bir özelliği olarak tasarlanmış olabilir ....
Stewart

2

Denedin mi

<object  type="text/html" data="page.html" height="500" width="500">
What I see if that didn't work 
</object>

Bunun çoğu tarayıcıda uygulandığını düşünüyorum.


Denemek gerekecek.
Jé Queue

2

Bir <include>etiketteki varyantlar aslında HTML'nin erken tarihinde dikkate alınmıştı , ancak hiçbir zaman çok ileri gitmediler.


1
Bununla birlikte, bu <include> etiketinin anlambilimi, bugünün çerçeve / iframe / nesnesinin anlamlarına benziyordu - C'nin #include'unda olduğu gibi yalnızca metin / kod veya rastgele etiket snippet'lerini değil, bir html belgesi içerecekti .
Tomáš Pospíšek
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.