HTML & CSS için yeni başlayanlar için

HTML & CSS için yeni başlayanlar için (Bölüm 24): iFrames

Eğitimdeki tüm videolar HTML ve CSS için başlangıç kılavuzu

iFrames uzun süredir HTML standardın bir parçasıdır. Ancak HTML 4.0'da Frames etiketleri Frameset-HTML varyantına taşınmıştır. HTML5'te Frames artık dikkate alınmazken, gömülü Frames (iFrames) hala kullanılmaktadır.

iFrames ile farklı web siteleri entegre edilebilir. Tarayıcı mevcut web sitesi içinde başka bir HTML dosyası daha işler. iFrame penceresinin içeriği bireysel olarak biçimlendirilebilir.

iFrames hakkında konuşulduğunda, bu HTML teknolojisinin güvenliği ayrıca ele alınmalıdır. Burada bir sorun, iFrames aracılığıyla web sitelerine gizlice sokulabilen zararlı kodlardır. Bu şüphesiz büyük bir sorundur.

Ancak HTML5'te bu sorunları atlatmak için uygun güvenlik mekanizmaları bulunmaktadır. Daha fazlası bu kılavuzun devamında anlatılacaktır. Ancak iFrames kullanmadan önce, bu potansiyel bir tehlike olabilir çünkü henüz tüm tarayıcılar tarafından desteklenmeyen yeni güvenlik öznitelikleridir.

HTML5'te iFrames artık sabit bir standarttır ve ekstra özniteliği vardır. Aşağıdaki örnek, iFrames'in nasıl tanımlanabileceğini göstermektedir.

<iframe src="http://www.psd-tutorials.de/" 
   width="420" 
   height="350">
   <a href="http://www.psd-tutorials.de/">PSD-Tutorials.de</a>
</iframe>

Tarayıcıda sonuç şu şekilde görünecektir:

HTML ve CSS'ye Giriş (Bölüm 24): iFrames

iframe elemanına src özniteliği atanır. Bu src, gösterilecek sayfanın değerini içerir. Bu yerel bir dosya olabileceği gibi - gösterilen örnekte olduğu gibi - harici bir kaynağı çağırma da mümkündür.

width ve height öznitelikleriyle iFrame'in genişliği ve yüksekliği belirlenir. Eklenti içeriği belirtilen iFrame boyutundan büyükse, kaydırma çubukları görüntülenir.

HTML ve CSS'ye Giriş (Bölüm 24): iFrame'ler

Açılış ve kapanış <iframe> etiketleri arasında herhangi içerikler tanımlanabilir. Bunlar, yalnızca iframe etiketini tanımayan tarayıcılarda görüntülenir.

HTML5'te iFrames ile ilgili olarak Sandbox davranışıyla ilgili bazı yeni öznitelikler tanıtılmıştır.

Tarayıcılarda, Same Origin Policy, bir gömülü web sayfasının gösterimi sırasında manipüle edilemeyeceğini sağlar. Bu güvenlik işlevi oldukça mantıklıdır. Bununla birlikte her zaman ideal değildir. Bu nedenle HTML5'te, gömülü bir sayfada harici bir sayfadan gelen içeriğe hangi izinlerin verileceğini belirten bir sandbox özniteliği tanıtılmıştır.

<iframe 
   sandbox="allow-forms" 
   src="getusercontent.cgi?id=12193">
</iframe>



sandbox özniteliği ile donatılan iFrames, gömülü web sayfasının DOM'una erişemez. Ayrıca betik çalıştıramaz ve çerez kaydedemezler. Bu kısıtlamalar, çeşitli Sandbox değerleri ile kaldırılabilir.

sandbox özniteliğine farklı değerler atanabilir. allow-forms ile gömülü web sayfası, kullanıcıdan bilgi alabilir. Kullanıcılar bunu yaparken, formun şu anki sayfadan gelmediğini bilmemektedirler.

Öte yandan, allow-some-origin belirtildiğinde, gömülü web sayfası, aynı ana sunucudan gelmiş gibi işlenir. Bu değerle, Same Origin Policy kaldırılır.

allow-top-navigation değeri, gömülü içeriğin en üst gezinti bağlamının içeriğini değiştirmesine izin verir.

Son olarak, allow-script'i var. Böylece, gömülü web sayfasında, gömülü sayfayı manipüle edebilecek JavaScript bulunabilir.

Aşağıdaki örnek, bir sandbox komutunun nasıl görünebileceğini göstermektedir:

<iframe 
   sandbox="allow-same-origin"
   src="http://www.psd-tutorials.de/">
</iframe>

Aynı şekilde birden fazla değeri de atayabilirsiniz. Bu değerler boşluklarla ayrılır. İşte bir örnek daha:

<iframe 
   sandbox="allow-same-origin allow-forms allow-scripts"
   src="http://www.psd-tutorials.de/">
</iframe>



iFrames genellikle harici içerikleri gömme amacıyla oluşturulmuştur. Bunun alternatifi olarak bunları dahil edebilirsiniz.

<iframe 
   src="http://www.psd-tutorials.de/" 
   width="200" height="150" 
   seamless>
</iframe>



Bu öznitelik oldukça önemlidir. Dahil edilen belgedeki bağlantı hedefleri - tanımlandığı yerin tarayıcı penceresinde - gösterilir (normal bir eklemeye nazaran, belirtilmediğinde, bağlantı hedefleri iFrame penceresinde gösterilir).

seamless şu anda yalnızca Google Canary, yani bu tarayıcının geliştirici sürümü tarafından desteklenmektedir.

Diğer etki, Stil sayfalarını içerir. Çünkü dahil edilen dosyanın stil sayfaları dahil edilen belge için de geçerlidir (normal eklemelerde stil sayfaları etkili değildir).

Bir diğer öznitelik de eklenmiştir. srcdoc ile dahil edilecek içeriği doğrudan tanımlayabilirsiniz. Buna bir örnek için aşağıdaki örneğe bakınız:

<iframe sandbox="allow-same-origin allow-forms allow-scripts" 
seamless="seamless" srcdoc=" 
   <script>
      top.location.href=" http://www.psd-tutorials.de/"
   </script>">
</iframe>

Bu durumda, genellikle ekleyeceğiniz dosyanın belirtildiği src özniteliği eksiktir.

HTML & CSS için Başlangıç Düzeyi (Bölüm 24): iFrames



Özniteliği srcdoc ile belirtilen içerik, yabancı bir sunucudan geldiği gibi işlenir. Bu nedenle Tam Köken Politikası'nın tam kapsamına tabidir. Bu davranış özellikle komut tanımlarıyla ilgiliyken ilginçtir. İçinde herhangi bir HTML ve JavaScript kodu izinlidir. Bununla birlikte, çift tırnak ve ve işareti adlandırılmış karakterler &quot; ve &amp; ile tanımlanmalıdır.

Burada ayrıca bir sayfa doğrudan tanımlayarak istediğiniz içeriği de yayınlayabilirsiniz.

<iframe sandbox="allow-same-origin allow-forms allow-scripts" 
seamless="seamless" srcdoc="
   <!DOCTYPE html>
<html>
<head>
<title>PSD-Tutorials.de</title>
</head>

<body>
 <p>…</p>
</body>
</html>">
</iframe>



Bu tam bir HTML dosyası olmasına gerek yok. Aşağıdaki gibi bir şey de mümkündür:

<iframe sandbox="allow-same-origin allow-forms allow-scripts" 
seamless="seamless" srcdoc="<p>PSD-Tutorials.de</p>">
</iframe>



Tarayıcıda görünen şu şekildedir:

HTML & CSS için Başlangıç Kılavuzu (Bölüm 24): iFrame'ler



Bu tamamen normal HTML sözdizimidir, komut dosyaları olmadan vs.

Şimdiye kadar görsel tasarım için kullanılan öznitelikler hakkında bazı ipuçları: scrolling, marginwidth ve marginheight gibi şeyler artık HTLM5'te izin verilmiyor. Bu öznitelikler CSS ile değiştirilmelidir.