JavaScript Temelleri

Bölüm 20

Uygulamalar

Bölüm 20.1 Sayfa 1

20.1 - JavaScript Programlarının Sayfa Erişilebilirliğine Etkisi

JavaScript temellerini özümsemek için uzun bir eğitim süresi yaşadık, artık öğrendiklerimizin uygulanma zamanları geldi. Bunun için çok kıvançlıyız. Yine de dikkatli olmak ve uygulamalarda prensipleri gözönüne almalıyız.

JavaScript çok geniş yetenekli ve modern bir bilgisayar dilidir. En büyük üstünlüğü, bir standarda bağlı olması, ücretsiz olması, kullanım kolaylığı ve gözalıcı olağanüstü çıktılar verebilmesi ve en güzel tarafı da programcılarının çıktı hazırlamak için ek programlama yapma gereksinimleri olmamasıdır. Çünkü JavaScript hesapları yapar, web sayfaları çıktıları sağlar. Çıktıların bu tür geniş olanaklar ile sunulabilmesi, JavaScript programlama ortamını dünyanın en tercih edilen programlama ortamlarından birisi haline getirmiştir.

JavaScript programlama dilinin, web sayfaları ile tek ilişkisi, web sayfalarının JavaScript programlama ortamı için bir çıktı sağlama ortamı olmasıdır. Buna rağmen, JavaScript programları ile web sayfalarının yapısına etki edilebilmesi nedeni ile, JavaScript programları, web sayfalarının yapısını etkileme amacı ile de kulanılmaktadır. Bu aslında bir tür amaç dışı kullanımdır ve birçok sakıncanın da doğmasına neden olmaktadır.

Web sayfaları, SGML alt grbundan bir DTD yönergesine göre yapılandırılmış belgelerdir. Belgelerin temel işlevi, kullanıcıya bilgi sunulmasıdır. Şu anda en güncel DTD, XHTML 1.1 DTD sidir. Henüz üzerinde çalışmalrın yeni başladığı HTML 5 in 2022 ye kadar hazır olmayacağı açıklanmıştır. Bu nedenle, uzun süre XHTML 1.1 'e bağlı kalınacak gibi görünmektedir.

Web sayfalarının temel yapılanması kullanılan DTD ye uygun olarak yapılmış işaretleme sayfası (markup) ile gerçekleşir. Belge çözümleyiciler bu yapılanma düzenlemelerini çözümler ve görüntülerler. Belge yapılanmasının DTD de belitilen yöntemler dışında hiçbir yönteme gereksinimi yoktur, zatren standart dışı girişimlerde de gözardı edilir. İşaretlemede başka bir öğe içermeyen bir web sayfasında statik bilginin kullanıcıya aktarımı kesin fakat sayfanın görüntüsü fazlası ile tekdüze sayılabilir. Görüntünün iyileştirilmesi için CSS yapılandırma yöntemleri kullanılabilir fakat bu durum belge yapılanmasında sadece DTD ye uygun işaretleme dilinin değil, bir de görüntü düzenleyicisi CSS yöntemlerinin kullanılması sonucunu doğurur.

Bir belgenin yapılanmasında (X)HTML ile birlikte CSS kullanılması belgenin doğal kodlama ortamıdır. Tüm geçerli belge çözümleyiciler HTML, XHTML ve CSS yöntemlerini çözümleyebilecek ve görüntüleyebilecek yetenektedirler. Statik bilgilerin kullanıcıya aktarımlarında, HTML veya XHTML yanında gereğinde CSS kullanımından fazla birşey kullanılmaması en doğru yoldur. Bu yöntemlerle sınırlanılırsa bilginin kullanıcıya aktarımında hiçbir sorun olmayacaktır.

HTML veya XHTML yanında CSS kullanımı için elementlerin style niteliklerinden yararlanılabilmesine karşın, bu durumda ortya çıkacak işaretleme sayfaları, iki farklı işareleme dili yöntemlerini içereceklerinden, okunmasında karışıklık oluşabilecektir. Bu nedenle, HTML veya XHTML işaretlemesinin ayrı bir sayfada, CSS yöntemlerinin de ayrı bir sayfada saklanarak, web sayfaına iliştirilmesi daha uygundur. Bu şekilde, değişik işaretleme dillerinin kullanının her yöntemi kolaylıkla okumasının engellememesi sağlanır. Buna engellememe (unobtrusion) prensibi adı verilir.

Günümüzde HTML artık pek kullanılmamaktadır. XHTML ve CSS birilikte kullanıldıklarında olanaklar her türlü bilginin yeterince iyi görüntülenme koşullarıyla kullanıcıya aktarımını sağlayabilmektedir. Statik bilginin sunulduğu web sayfalarında JavaScript kullanılarak, görüntü iyileştirlmesi iyi bir fikir değildir. Eğer Kullanıcının belge çözümleyicisi JavScript programlarını değerlendiremiyorsa, sayfanın kullanıcıya bilgi aktarımında kesintiler olabilir. Bu durumda alınacak önlem, bilginin JavaScript yorumlayıcısı kapalı bile olsa kullanıcıya aktarımının engellenmemesi en kötü olasılıkla görüntüsünün iyi olmaması sonucunun oluşmasının sağlanmasıdır. Buna farkedilmeden kayboluş prensibi adı verilir. Statik bilgilerin aktarıldığı web sayfalarında görüntü iyileştirilmesi için JavaSript kullanılıyorsa, mutlaka farkedilmeden kaybolabilecek yöntemler kulanılmalıdır. Bu sayfalarda yine engelleme prensibi gereğince, JavaScript programları da aynen CSS sayfaları gibi, ayrı sayfalarda saklanmalı ve web sayfalarına iliştirilmelidirler.

Dinamik bilgilerin sunulduğu sayfalarda, yani bir hesaplama sonucunun görüntülendiği sayfalarda, JavaScript kullanılması zorunludur. Çünkü, bu sayfalarda zaten bilginin oluşması JavaScript'e bağlıdır. Bu sayfaları okuyacak okuyucunun belge çözümleyicisinin JavaScript programının yorumlayabilmesini sağlamak kullanıcının sorumluğundadır. Çünkü aksi durumda, kullanıcı gereksinme duyduğu bilgiyi elde edemeyecektir. Bu konuda belki fazla ikircikli olamamak gerekir, çünkü tüm belge çözümleyicilerin JavaScript yorumlayıcıları, kullanıcının kendisi kapatmadıkça varsayılan olarak açıktır ve günümüzde kullanıcıların yaklaşık %97 sinin belge çözümleyicilerinin JavaScript yorumlayıcılarının açık ve işlevsel olduğu açıklanmaktadır.

Dinamik verilerin sunulduğu bir web sayfasında, JavaScript yorumlayıcısı zaten açık olması gerektiğinden, farkedilmeyecek kayboluş kuralı geçerli değildir. Bu sayfalarda, JavaScript ile her türlü menü, görüntü iyileştirmesi, resim rollover'i gerçekleştirilebilir. Bu Yöntemler bilgi akışını hiçbir şekilde engellemez.

Programların birbirlerinin okunmasını engellememeleri prensibi her zaman geçerlidir. Bir web sayfasında XHTML kodlarını taşıyan sayfa esastır. CSS ve JavaScript kodlarını taşıyan diğer sayfalar her zaman ayrı bir sayfa halinde ve ana XHTML sayfasına bağlantılı olarak tutulmalıdır.

Bir web sayfasının, birbirleri ile ilişikli (X)HTML, CSS ve JavaScript kodlarının karşılıklı etkileşimi ile çözümlenmiş olduğu her zaman gözönünde tutulmalıdır. Bir sayfanın (X)HTML kodlarından bazı elementlerin kaldırılması, bu elementlere bağlantı yapan JavaScript kodlarında geçersiz kalmasıına neden olacaktır. Bu yüzden sayfaya katkı yapan her kodun değiştirilmeden önce, değişimin sayfanın genel çözümlenmesine yapabileceği etkilerinin iyi incelenmesi ve olumsuz sonuçları olabilecek değişikliklerden kaçınılması gerekir.