Bölüm 8

Çerçeve (Frame) Tekniği

Sayfa 1


<frameset>, <frame>, <noframes> ve <iframe> Elementleri

 

Çerçeve Tekniğinin Tanıtımı

Çerçeve (Frame) tekniği, birbirinden bağımsız, birçok Web sayfasının, belge çözümleyicisinin görüntülediği alana (viewport) yerleştirilmeisidir. Sayfalar, görüntü alanını kesintisiz olarak paylaşır. Araya istenirse kenar çizgileri konularak sayfaların sınırları belirtilir. Kenar çizgileri konulmazsa, kullanıcılar gördükleri sayfanın aslında birden çok bağımsız sayfadan oluştuğunu farkedemezler.

Çerçeve tekniği, göreli olarak yeni bir yöntemdir. Bu teknik, kullanıma girmesinden sonra çok olumlu karşılanmış, fakat uygulamada karşılaşılan zorluklar yaygınlaşmasını kısıtlamıştır. Yaşanan sorunların en başında, bu yöntemin ancak bilgili ve deneyimli Web programcıları tarafından uygulananabilen sağlam bir kodlama sistemi ile uygulanabilmesidir. Bu gereksinme, derslerimizde hedeflediğimiz, kuramsal temellere daynarak sayfa tasımı yapan birikimli ve deneyimli Web programcılarını yetiştirmenin önemini doğrulamaktadır. Ayrıca, özellikle başlangıçta, belge çözümleyicilerin çerçeve içeren sayfalara desteği kıstlı kalmıştır. Bundan başka, çerçeve içeren sayfaların kopyalanmasının güç olması, sayfaların kaynak kodlarına ulaşmanın kullanıcılar için olanaksızlaşması ve bunun kullanıcı üzerinde negatif bir etki yaratması, sayfaların akış sırası (history) de görülen zorluklar gibi nedenler de çerçeve tekniğinin yaygınlaşmamasına etken olmaktadır. Aslında, yukarıdaki çekinceleri göze alan ve bu derslerde olduğu gibi bilimsel çalışma yöntemini benimsemiş olan Web programcıları için, çerçeve tekniği, hiç bir zorluğu bulunmayan bir yöntemdir ve prensip olarak tablolar ile çalışmaktan fazla bir farkı yoktur. Bu tekniğin detayları aşağıda incelenmiştir.

Frameset Belge Türü

Çerçeve içeren belge tipi bildirimi, yenilenmiş olanlar ve çerçeve içeren belgeler için kullanılanlar da dahil olmak üzere, tüm element ve nitelikleri içerir. Bu DTD adeta geçiş dönemi + çerçeve elementleri DTD si görünümündedier. Bu DTD nin uygulanması aşağıda görülmektedir :

Çerçeve içeren belge tipi DTD si, Geçiş dönemi DTD sinden sadece çerçeve tanımları ile ayrılır. W3C çerçeve içeren sayfalarla geçiş dönemi DTD sini ilişkilendirmiştir. Bu ilişkinin mantıksal bir tutarlılığı yoktur. Web tasarımında çerçeve kullanmak ayrı bir uygulma, geçiş dönemi spesifikasyonuna dayanarak tasarım yapmak ayrı şeydir. W3C' ye göre, tasrımda çerçeve tekniğiinin kullanılması kodlamada da geçici spesifikasyon düzeyine düşmeyi gerektirmektedir. Oysa bizim önerimiz tam aksi yöndedir. Çerçeve tekniği kullanımı amacı ile çerçeve içeren belge türü bildirimi yapılmış sayfalarda, katı kuralcı DTD dışında sadece çerçeve tekniği için gerekli nitelik ve elementlerin kullanımı ile yetinilmelidir. Web sayfalarının kalıcı ve ilerideki tekniklerle uyumlu olabilmeleri için tasarımlar geçici spesifikasyonların rahatlığına kapılmadan en güncel yöntemler kullanılarak yapılmalıdır. Unutulmamalıdır ki, kuramsal çalışma yöntemleri zor yolun seçilmesidir, fakat gelişme için aslında tek yol zor yoldur.

<frameset> Elementi

Çerçeve içeren belge türünden yararlanılarak kodlanan belgelerde, <body> elementi yerine <frameset> elementi kullanılır. <frameset> elementinin Çerçeve İçeren Belge Türü Tanımında (Frameset DTD), <frameset> elementi tanımı aşağıda görülmektedir.

Bu tanımda, <frameset> elementinin başlangıç ve sonuç imlerinin kulanımlarının zorunlu olduğu, her <frameset> elementinin en az bir <frameset> veya <frame> elementi içerebileceği, yani iç içe <frameset> elementlerinin kullanılabileceği, her <frameset> elementinin içeriğinde en çok bir tane <noframes> elementi bulunabileceği veya hiç <noframes> elementi bulunmayabileceği belirtilmiştir. <frameset> Elementinin sözdizimi,

<frameset (Başlangıç imi: Zorunlu)

Ortak Temel Nitelikler (Çekirdek Nitelikler, Uluslarasılaştırma Nitelikleri, Script Yazılabilecek Olaylar)

rows = (çoklu uzunluk listesi) [YN]

cols= (çoklu uzunluk listesi) [YN]

onload= script [TB] <frameset> içindeki bir <frame> elementinin yüklenmesinin tamamlanması)

onunload=script [TB] <frameset> içindeki bir <frame> elementinin kapatılması)

>

İçeriği : Sadece <frameset>, <frame>, <noframes> elementleri.

</frameset> (Bitiş imi: Gerekli)

şeklindedir.

<frameset> Elementini İçerebilecek Elementler: Sadece <html> ve <frameset> elementleri.

<frameset> Elementinin Nitelikleri

Ortak Temel Nitelikler (Çekirdek Nitelikler, Uluslararasılaştırma Nitelikleri, Script Yazılabilecek Olaylar). Daha önceden incelenmiştir.

rows = (çoklu uzunluk listesi) [YN] Yatay olarak yerleştirilmiş çerçeve sayısını belirtir. Virgülle ayrılmış bir piksel, yüzde veya bağıl uzunluk değerleri listesi değerini alabilir.

cols = ( çoklu uzunluk listesi) [YN] Dikey olarak yerleştirilmiş çerçeve sayısını belirtir. Virgülle ayrılmış bir piksel, yüzde veya bağıl uzunluk değerleri listesi değerini alabilir.

<frame> Elementi

<frame> Elementi, açılan pencerenin niteliklerinin belirtilmesi için kullanılan bir elementtir. DTD deki tanımı aşağıda verilmiştir.

Bu tanımdan, <frame> elementinin başlangıç iminin kullanımının zorunlu olduğu, bitiş iminin kullanımının ise, isteğe bağlı olacağı görülmektedir. İsteğe bağlı olmasına rağmen, bitiş iminin de belirtilmesinde yarar bulunmaktadır. <frame> Elementi boş bir elementtir, öz içeriği yoktur ve sadece niteliklerinden yararlanmak amacı ile kullanılır. Bu elementin içeriği bağımsız bir başka Web sayfasıdır. <frame> Elementinin sözdizimi,

<frame (Başlangıç imi: Zorunlu)

Ortak Temel Nitelikler (Çekirdek Nitelikler, Uluslarasılaştırma Nitelikleri, Script Yazılabilecek Olaylar)

name = cdata [YZ]

longdesc = URI [TB]

src = URI [TB]

frameborder = 1 | 0 [YN]

marginwidth = piksel [YN]

marginheight = piksel [YN]

noresize = noresize [YZ]

scrolling = auto | yes | no [YZ]

>

İçeriği : Yok. (Bağımsız bir başka HTML sayfası içerebilir).

</frame> (Bitiş imi: İsteğe Bağlı )

şeklindedir.

<frame> Elementini İçerebilecek Elementler: Sadece <frameset> elementi.

<frame>Elementinin Nitelikleri

Ortak Temel Nitelikler (Çekirdek Nitelikler, Uluslararasılaştırma Nitelikleri, Script Yazılabilecek Olaylar). Daha önceden incelenmiştir.

name = cdata [YZ]

Bu nitelik çerçeveye bir kimlik kazandırmak amacı ile kullanılır. Bu kimlik değeri ileride oluşturulacak bağlantıların hedefi olarak belirtilebilir.

longdesc = URI [TB]

Daha çok erişim için yardım amacını tasşıyan ve çerçeve hakkında bilgi veren bir kaynağı belirten bu nitelik çok ender kullanılır.

src = URI [TB]

Çerçeve içeriğini oluşturan belgenin kaynak lokasyonunu belirtir.

frameborder = 1 | 0 [YN]

Bu niteliğe 1 değeri verilirse, çerçeve etrafına bir kenar çizgisi çizilir. Değerin 0 olması halinde bile, eğer komşu çerçevelerde bu niteliğin değeri 1 olarak belirtilmiş ise, komşu çerçeve etrafına bir kenar çizgisi çizilir. Sonuçta iki komşu çerçeve bir kenar çizgisi ile ayrılmış olur.

marginwidth = piksel [YN]

Bu değer, piksel olarak, çerçeve içeriği ile sol ve sağ marjlar arasında bırakılacak boşluğu belirtir. Bu niteliğe bir değer verilmemişse, belge çözümleyiciler kendi özel varsayılan değerlerini atarlar.

marginheight = piksel [YN]

Bu değer, piksel olarak, çerçeve içeriği ile alt ve üst marjlar arasında bırakılacak boşluğu belirtir. Bu niteliğe bir değer verilmemişse, belge çözümleyiciler kendi özel varsayılan değerlerini atarlar.

noresize = noresize [YZ]

Bu niteliğe noresize değeri verilirse, çerçeve belge çözümleyiciler tarafından yeniden boyutlandırılmaz. Belge çözümleyiciler, özellikle ekran çözümlemelerinde, kullanıcıların görüntü pencerelerini sık sık boyutlamaları sonucunda, pencere içeriklerini de olabildiğince uyum sağlamak amacı ile yeniden boyutlandırırlar. Bu nitelik çerçevenin yeniden boyutlandırmasını engeller. Sonucun uygunluğu denenerek kontrol edilmelidir.

scrolling = auto | yes | no [YZ]

Bu niteliğe verilecek değer, çerçeve içeriğine kaydırma özelliği sağlanması için kullanılacaktır. Kullanılabilecek değerler,

<noframes> Elementi

Bu element, çerçeve tekniğini desteklemeyen belge çözümleyicilere, çerçeve içeren sayfalar içeren Web sayfalarına rastladıkça ne yapacağını belirtmek için kullanılır. Günümüzde, kullanımda olan tüm görsel belge çözümleyicilerin son sürümleri çerçeve tekniğini desteklerler. Sadece Lynx gibi çok eski ve metin tipi görsel belge çözümleyicileri ile, ses çözümleyicisi, cep telefonu belge çözümleyicisi tipinde olanlar gibi özel belge çözümleyiciler çerçeve tekniğini desteklemeyebilirler. Bu nedenle, bu elementin işlevi çok sınırlı olabilir. DTD deki tanımı,

şeklindedir. Bu tanıma göre, <noframes> elementinin başlangıç ve bitiş imlerinin kullanımları zorunludur. İçeriği boş bırakılabilir veya akış tipi elementler ile doldurulabilir. <noframes> Elementinin sözdizimi,

<noframes (Başlangıç imi: Zorunlu)

Ortak Temel Nitelikler (Çekirdek Nitelikler, Uluslarasılaştırma Nitelikleri, Script Yazılabilecek Olaylar)

>

İçeriği : <a>, <acronym>, <address>, <applet>, <b>, basefont, <bdo>, <big>, <blockquote>, <body>,<br>, <button>, center, <cite>, <code>, <dfn>, dir, <div>,<dl>,<em>,<fieldset>, font, <form>, <h1>.. <h6>, <i>, iframe, <img>, <input>, isindex, <kbd>, <label>, <map>, menu, <noframes>, <noscript>, <object>, <ol>,<p>,<pre>,<q>, s, <samp>, <script>, <select>, <small>, <span>, strike, <strong>, <sub>, <sup>, <table>,<textarea>, <tt>, u, <ul>, <var>.

</noframes> (Bitiş imi: İsteğe Bağlı )

şeklindedir.

<noframes> Elementini İçerebilecek Elementler: <blockquote>, <body>, <button>, center, <dd>, <div>, <fieldset>, <form>, <frameset>, <iframe>, <li>, <noframes>, <noscript>, <object>, <td>, <th>.

<noframes> Elementinin nitelikleri sadece önceden incelenmiş olan çekirdek niteliklerdir . İçerik ve nitelik açısından bir değişiklik göstemeyen bu element için, uygulamada örnekler verilmesi yeterli olabilecektir.

<iframe> Elementi

Bu element, Satıriçi Çerçeve Elementi (Inline Frame Elment) olarak tanınır ve işlevi, bir HTML sayfasında gömülü olan diğer bir HTML sayfası oluşturmaktır. <iframe> Elementi, HTML 4.01 katı kuralcı DTD sinde bulunmaz çünkü aynı işlevi <object> elementi de gerçekleştirebilmektedir. Buna rağmen, belge çözümleyicilerin, <object> elementine yeterli destek verememeleri, şu anda <iframe> elementini henüz kullanımda bırakmaktadır. Geçici DTD de tanımı,

olarak yapılmıştır. Bu tanımda ne nitelik ne de içerik açısından yeni bir öğe bulunmadığından, bu elementin sadece örneklerlerde kullanımı incelenecektir.

<iframe> Elementinin İçerebileceği Elementler: <iframe> Elementini tanımayan belge çözümleyicilerin görüntülemesi için açıklayıcı metin, <a>, <acronym>, <address>, <applet>, <b>, basefont, <bdo>, <big>, <blockquote>, <body>,<br>, <button>, center, <cite>, <code>, <dfn>, dir, <div>,<dl>,<em>,<fieldset>, font, <form>, <h1>.. <h6>, <i>, iframe, <img>, <input>, isindex, <kbd>, <label>, <map>, menu, <noframes>, <noscript>, <object>, <ol>,<p>,<pre>,<q>, s, <samp>, <script>, <select>,<small>, <span>, strike, <strong>, <sub>, <sup>, <table>, <textarea>, <tt>, u, <ul>, <var>.

<iframe> Elementini İçerebilecek Elementler: <a>, <acronym>, <address>, <applet>, <b>, <bdo>, <big>, <blockquote>, <body>, <button>, <caption>, center, <cite>, <code>, <dd>, <del>, <dfn>, <div>,<dt> ,<em>,<fieldset>, font, <form>, <h1>.. <h6>, <i>, iframe, <ins>, <kbd>, <label>, <legend>, <li>, <noframes>, <noscript>, <object>, <ol>,<p>,<pre>,<q>, s, <samp>, <small>, <span>, strike, <strong>, <sub>, <sup>, <td>, <th> ,<tt> , u, <var>.

Aşağıda bu konuda, bir örnek görülmektedir.

Bu örnek prensip olarak <object> elementi ile de oluşturulabilir.

 

 

 

Wednesday, October 5, 2005 17:48