JavaScript Temelleri

Bölüm 1

Başlangıç Bilgileri

Bölüm 1 Sayfa 5

1.5 - Web Sayfalarında JavaScript Programlaması

1.5.1 - JavaScript Programlarının Web Sayfalarında Kullanımı

Web yayıncılığının yeni başladığı 1998 li yıllarda, JavaScript programları, sayfanın hem görüntü özelliklerinin arttırılması, hem de kullanıcı ile etkileşimin sağlanması amacı ile kullanılmıştır. Bu dönem, hem kullanılan JavaScript yorumlayıcılarında, hem de HTML elementleri ve bu elementlerin niteliklerinde, bir uzlaşının sağlanamadığı kaotik bir süreçtir. Bu dönemde yazılmış JavaScript programlarının, fazla özenli olmadığı sayfanın erişebilirliğinin gözönüne alınmadığı söylenebilir. Yine de, günümüze kadar gelmiş birçok güzel programlama kavramı bu dönemde geliştirilmiştir. Kısa sürede bir standartlaşma ve toparlanma süreci başlamış ve sayfa görüntülenmesi için, CSS (Katlı Stil Sayfaları) kodlama sistemi geliştirilmiştir. CSS, JavaScript programlarının statik görüntüleme ile ilgili işlevini devralmış ve geriye ancak JavaScript gibi güçlü bir programlama dilinin başarabileceği sayfanın etkileşiminin sağlanması işlevi kalmıştır. Bu JavaScript programlama dilinin gerçek gücünü gösterebileceği uygulama alanıdır. Bu şekilde bir web sayfasının sistematiği belirli bir açıklığa kavuşmuş olmaktadır.

1.5.2 - Bir Web Sayfasının Anatomisi

Web yayıncılığının başlangıcından bugüne kadar geçen yaklaşık on beş yıllık süreç içinde kazanılan deneyimler, bir web sayfasının anatomik yapısı üzerinde belirli bir anlayışın oluşmasını sağlamıştı. Bugün için genel olarak kabul edildiği gibi, bir web sayfası belirli katmanlardan oluşmaktadır. Bunlar,

katmanlarıdır. Günümüzde, ulaşılmış gelişmişlik düzeyinde, her katmanın standartlarla belirlenmiş kodlama sitemi bulunmakta ve bu kodların hem birbirlerinden farklı olması, hem de birbirlerinden fiziksel olarak ayrı dosyalarda saklanabilmeleri olanağı sağlanmıştır.

Web yayıncılığında esas önemi olan bilgileri içeren belgedir. Web belgesinin başlıkları, paragrafları, resimleri, formları, gibi kısımlarının belirlenmesi, kısaca yapılandırılması, günümüzde XHTML 1.1 düzeyine ulaşan standartlara uygularak SGML esaslı yapılandırma dilleri ile gerçekleştirilmektedir. Yakın bir gelecekte bu konuda, geliştirilmekte olan XHTML 2 standardı ile uzun süre korunacak, belki de bu konuda tamamlanma olacak bir aşamaya ulaşılacaktır.

Belgenin yapılanmış kısmlarının görüntülenmesi, yapılandırma kodlarından farklı olacak ve farklı dosyalarda saklanarak birbirlerinden ayrılacaklardır. Yapılandırmanın görüntülendirmeden ayrılması kavramı bu şekilde gerçekleşebilecektir. Bu işlevi CSS tam olarak üstlenebilmektedir. Sayfanın yapılandırma kodlarında, görüntü ile ilgili hiçbir kod bulunmayacak, yapılandırma kodları bir (X)HTML dosyasında saklanacaktır. Görüntü ile ilgili kodlar, CSS görüntü kodlama dili ile kodlanacak ve ayrı bir *.css dosyasında saklanarak sayfa ile ilgilendirilecektir. Sayfanın görüntüsünün sağlanmasında, JavaScript programlarının da azımsanmayacak bir işlevi olabilir. Rollover resimler, yani mouse ile üzerine gelince, değişen resimlerlerle düzenlenmiş bağlantılar, açılır menüler, mouseover etkileri gibi birçok görüntü etkisi JavaScript programları ile sağlanmaktadır. Bu konuda,JavaScript ile yapılabilen herşey, özellikle görüntü düzenlenmeleri ve gösterişli menüler, CSS ile yapılabilmelidir. Çünkü, JavaScript ile yapılan görüntü düzenlemeleri JavaScript çalışmadığı durumlarda çalışmayacaklardır. JavaScript kodlarının çalışabilirliği ise, kullanıcının belge çözümleyici ayarlarında, JavaScript işlevselliğini açık tutması olasılığına bağlıdır. Kullanıcının belge çözümleyici ayarlarında, JavaScript işlevselliğini kapatması durumunda ise, JavaScript kodları çalışmayacak ve JavaScript kodlarının yapması beklenen tüm işlevlerden web sistesi yoksun kalacaktır.

Son katman, etkileşimin sağlandığı kodlardır ve mutlaka bir programlama dili kullanımı ile gerçekleştirilebilir. Bu konuda ortak destekenen script dili sadece JavaScript programlama dilidir. Bu işlevi sağlayacak JavaScript programlama adımlarını içeren JavaScript kod dosyası ayrı bir *.js dosyasında saklanarak sayfa ile ilgilendirilecektir. Yapılandırmanın sunumdan, her ikisinin de etkileşimden ayrı tutulması olarak ifade edilen prensip, bu şekilde gerçekleştirilmiş olacaktır.

1.5.3 - Engelleme Yaratmayan JavaScript

Standartlar henüz yerleşmemiş durumda iken, yazılmış biriçok JavaScript programı, başarılı programlar olmasına karşın, uygulandıkları sayfanın kullananılabilirliğini arttıramayan, sayfadaki bilgilere erişimin sağlanmasını gözönüne almayan bir düşünce ile yapılmaktaydı. Yani, JavaScript kodlarına sayfanın vereceği bilgiler de katıldığında, JavaScript kodlarının şu veya bu şekilde çalışmadığı durumlarda, sayfanın vereceği bilgilerde bir azalma olacağı görülebilir. Buna bilginin engellenmesi (obstrüksiyon) (aynı futboldeki gibi) adı verilmiştir. Bu durum kullanıcıların tepkisine neden olmuş, özellikle CSS çıktıktan sonra, JavaScript programlarının sorundan başka birşey getirmediği gibi yanlış bir düşüncenin etkisine giren kullanıcıların, kullandıkları belge çözümleyicilerin, JavaScript yorumcularını kapatmaya başladıkları görülmüştür. Oysaki, JavaScript güçlü ve belge çözümleyicilerin ortaklaşa destekledikleri tek programlama dilidir. Bu tutumun yaygınlaşması halinde, web sayfalarının kullanıcı ile etkileşim olanağının kalmayacağı açıkça görülmekteydi.

Bu konuda, tarihsel bir dönüm noktası, 2002 de Stuart Langridge tarafından yayınlanan bir yayında "Engelleme Yaratmayan JavaScript" kuramını ortaya artması ile gerçekleşmiştir. Bu kuram, JavaScript programlama dilinin web sayfalarındaki rölünü yeniden tanımlamış ve JavaScript programlamasının gereksiz ve kötü kullanımı nedeni ile yaşanan olumsuzluklara son verilerek, web sayfalarında JavaScript programlama dilininin gücünden sonuna kadar yararlanılabilmesinin önünü açmıştır. Bu kurama göre, engelleme yaratmayan bir script programı, aşağıdaki ögeleri içermelidir:

Bu prensiplere ek olarak modern script yazılımının, programcılardan beklediği temel prensipler de bulunmaktadır. Bunlar arasında en önemli beklentiler, belge çözümleyileri farklı olsa da script programlarının çalışmaya devam edebilmeleri, yani programların ortak desteklenen öğelerden oluşması, standartlara kesinlikle bağlı kalınması, programlama tekniklerinde, yapısal programlama, nesneye yönelik programlama, ve mantıksal program yapısının uygulanması bulunmaktadır.

Bu beklentilerin tümünün programcılar tarafından tam olarak karşılanması olanağı her zaman bulunamayabilir. Fakat en azından, olanaklar çerçevesinde bu yöntemlerin olabildiğince çoğunun uygulanmaya çalışılması gereklidir. Bu teknikler, programcılara ek yükler getirebilir ve yıllardır uyguladıkları alışkanlıklarından vazgeçmeleri gerekebilir. Programcıların, ilerleme adına bu zorluklara katlanmaları gerekmektedir.

1.5.4 - Engel Yaratmayan Javascript Kuramının Web Sayfaları Tasarımına Etkisi

Engel yaratmayan Javascript kuramı, web sayfalarının tasarımını kategorik olarak değiştirmiştir. Herşeyden önce, web sayfalarında, JavaScript programlamasının işlevi yeniden tanımlanmıştır. Bu kurama göre, bir web sayfasında kullanılacak bir script programı (hangi dilde olursa olsun), sayfanın işlevselliğini arttırmalıdır. Yani salt bir programlayıcı gösterisi olarak sayfaya gereksiz kod eklenmesi devri kapanmıştır. Bunun yanında, JavaScript programlama dilinin güçlü olduğu , elektronik ticaret, müşterilerle ilişkiler, kullanıcı verilerinin ön kontrolü, matematiksel hesapların yapılması, AJAX gibi, alanlarda, kullanımı yaygınlık kazanmıştır.

Engelleme Yaratmayan JavaScript kuramının bir sonucu olarak, sayfanın, yapılanmasını sağlayan (X)HTML kodları, görüntü ve etkileşim ile ilgili hiçbir kod içermyecek ve ayrı bir *.(x)htm(l) dosyasında bulunacaktır. Sayfanın yapılandırıldığı X)HTML kodlarında en minimalist tutumla hiç olay yöneticisi nitelik bulunmayacak ve olay yönetimi sadece JavaScript kodlarından sağlanacaktır. Bu konuda, belge çözümleyicilerin ortak olarak sağlayabildikleri desteğin maksimumunu web sayfası kodlarına yansıtmak gerekir.

Engelleme yaratmayan Javascript kavramı aslında salt Javascript için oluşturulmasına karşın çok daha genel kapsamlı bir programlama paradigmasının doğmasına neden olmuştur. Bugün için, genel programlama prensibi, bir sayfanın içerik yapılandırma, görüntü düzenleme ve etklişim sağlama kodlarının ayrı programlama dillerinde gerçekleştirilmesini ve ayrı dosyalarda saklanmasını öngörmektedir.

Genel programlama prensibi gereğince, sayfa içeriğinin yapılandırılması, (X)HTML kodları ile gerçekleştirilecek ve ayrı bir kod sayfasında tutulacaktır. Bu kodlar arasında görüntü iyileştirlmesine ve etkileşim sağlanmasına yönelik nitelikler bulunmayacaktır.

Sayfanın görüntüsünün güzelleştirilmesi, CSS programlama dili kullanılarak gerçekleştirilecek ve ayrı bir *.css dosyasında tutulacaktır. Sayfanın görüntüsü, içeriğin vermesi gereken bilgilerin tümünü yansıtacak şekilde düzenlenecek, bilgilerin tümünün ilgi çekecek şekilde sunumuna yönelik olacaktır.

Etkileşimi sağlayacak ve ayrı bir *.js sayfasında tutulacak JavaScript kodlarının düzenlenmesi, sayfanın en zor çalışması olacaktır. Burada önemli olan, etkileşimi sağlamak amacı ile yazılacak kodların sayfa içeriğine erişimi engellememesidir. Etkileşimin amacı, sayfanın erişebilrliğinin azaltılmaması, sayfaya çekicilik ve kullanışlılık sağlanması olmalıdır.

1.5.5 - Yapısal Programlama

Yapısal programlama, geniş programları, küçük parçalara bölerek çözümleme yöntemidir. Her parça, kod ve değişkenleri diğerlerinden soyutlanmış bağımsız fonksiyonlar olarak çözümlenecektir. Bu fonksiyonlara tek giriş noktasından veri beslenmeli ve tek çıkış noktasından değer döndürülmelidir.

Yapısal programlama, (Structured Programming) teoremi, kökenleri 1946 daki bilgisayar yapımına yön vermiş olan von Neumann Yapılanmasına dayanan programlama dilleri kuramının bir sonucudur. Bu teoreme göre, hesaplanabilen her fonksiyon, bir programlama diline, üç türlü kontrol yapılanması kullanılarak yerleştirilebilir. Bu kontrol yapılanmaları,

olarak tanımlanır. Yapısal programlama kuramı, son yıllarda tam olarak yerleşmiştir. Bu kurama uymayan program dilleri örnekleri, COBOL, FORTRAN ve BASIC iken, yapısal programlama dilleri örnekleri olarak, Pascal, Ada, Java, JavaScript sayılabilir. Bu teorem, gözönüne alınarak, büyük bir program, küçük alt programlara bölünerek modüler bir yapı içinde organize edilmelidir. Modüller veya alt programlar (fonksiyonlar), sıralı bir şekilde çalıştırılmalıdır. Modüllerin çalışma sırası mantıksal olarak belirlenmelidir. Pratikte bu işleme dallanma adı verilir ve bu durumda, GO TO deyimlerinin kullanılmaması, program akışının mantıksal (boolean) değişkenlerin değerlerine göre yön değiştirmesi gerekir. Alt programlara tek giriş ve tek çıkış noktası olmalıdır (iterasyon). Yani bir alt program çağrıldığında sadece bir tek return ifadesi ile tek bir değer geri döndürülmelidir.

Programcılar için, yapısal programlama prensiplerine uyulması ek bir yük ve zor okunan kodlar anlamına gelir. Buna rağmen, aşırı bir zorunluluk olmadığında, tüm programcılar yapısal programlama kurallarına uyarlar. Yapısal programlama prensiplerine uygun programlar, daha kolay izlenebilir ve bakımları daha kolay olur. Kodların zor okunması sadece bir alışkanlık konusudur. Yapısal programlama yöntemlerine alışan programcılar, kodlara kolayca hakim olurlar ve ileride yazmış oldukları kodların bakımını daha kolay gerçekleştirebilirler. Günümüzde, bir programın yapısal programlama yöntemlerine kesinlikle uyması, beklenilen bir davranış sayılmaktadır.

1.5.6 - Web Belgelerinin Erişilebilirliği

Bir belgenin web üzerinde yayınlanması ile tüm dünyadan, her türlü işletim sistemi ve her türlü belge çözümleyicinin her sürümü ile belgeyi okumak isteyebilecek kullanıcıların indirmesine açılır. Okuyucuların içinde, görsel ve fiziksel engelli olanlar da bulunabilir. Bir web yazarının görevi, her durum ve koşul altında özellikle engelli okuyucular ve yetersiz JavaScript desteği sağlayabilen belge çözümleyiciler için belgenin içeriğinin okunabilir olmasını sağlamaktır. Bu okuyucular en azından sitenin içeriğini okuyabilmeleri , bağlantılarını izleyebilmeli ve form sunumu gibi temel işlevleri gerçekleştirebilmelidirler.

Bir web yazarının sitesini nasıl erişilebilir halde tutabileceğinin kesin bir yöntemi yoktur. Doğal olarak bir siteden tüm kullanıcıların tam olarak yayrlanmaları olanağı bulunamaz. Burada ilk düşünce, temel işlevselliğin sağlanması olacaktır. Bazı durumlarda, fiziksel engelli kullanıcılar için özel sayfaların hazırlanması düşünülebilir. Sitenin olabildiğincce çok kullanıcı tarafından erişilebilmesi için kesinlikle standart dışı, belge çözümleyicilere özel işaretlemeler içermemesi gerekir. Yine aynı düşünce ile, sadece ortak desteklenen standart JavaScript bildirimleri kullanılmalıdır. Standartları az destekleyen, eski sürüm ve az kullanılan işletim sistemlerine ait belge çözümleyicileri kullanan izleyiciler için, sitenin biraz sonra inceleyeceğimiz, "Aşamalı Geliştirme" ve "Farkedilmeyen Kayboluş" prensipleri gözönüne alınarak hazırlanması da, erişebilirliğini arttırır. Fiziksel engeli olmayan kullanıcılar için, ilk düşünülebilecek konu, ilk olarak en büyük kulanıcı kütlesinin erişiminin garantiye alınmasıdır. Günümüzde, en büyük kullanıcı kütlesi Windows işletim sistemini kullanan kullanıcılardır. Bunlar arasında çoğunluk, son sürüm olan MSIE 7.0 a geçmiş durumdadır. Bu nedenle, zaten çok dikkatli yazılmış ortak desteklenen standartlara uygun kodlar, büyük bir olasılıkla, MSIE 7 tarafından büyük bir çoğunlukla okunabilecektir. Windows işletim sisteminin en büyük özelliği, kullandıkları yazılımın çok kolay güncellenmesidir. Böylece Windows işletim sisteminde sayıları çok fazla olmayan FireFox kullanıcılarının da standartları iyi destekleyen FireFox 2 sürümüne geçmiş olmaları olasılığı yüksektir. Diğer işletim sistemleri altında çalışan belge çözümleyicileri kullanan izleyiciler, büyük bir olasılıkla, temel işlevleri standartlara uygun olarak hazırlanmış sitenin, hiç değilse temel işlevlerine ve belki de çözümleyebilecekleri kadar diğer gelişmiş kısımlara da erişebileceklerdir. Bu kısımlara erişilemezse bile sitenin temel işlevlerine erişm sağlanmış olduğundan sadece görüntüsel bir kayıp olacaktır. Bir sitede, JavaScript programlama dili kullanılarak uydu yörüngesi hesaplanıp yayınlanıyorsa ve JavaScript yorumlayıcısı çalışmıyorsa, doğal olarak sitenin işlevini yapabilmesi olanağı da olmayacaktır. Bu durumda da kullanıcı, <noscript> elementinden yararlanılarak uyarılmalıdır. Özet olarak tüm erişebilirlik sorunlarının kökten çözümünün olanağı yoktur. Fakat, web yazarlarının olağanüstü, bilinçli, dikkatli ve duyarlı bir anlayışla düzenleyeceği kodlama yöntemi ile, birçok erişebilirlik probleminin daha oluşmadan önlenmesi olasılığı bulunmaktadır. Burada, en büyük sorumluluk web yazarlarına düşmekte, kullanıcıların da belge çözümleyicilerini ve işletim sistemlerini güncellemek, dikkatli ve bilinçli davranmak, belge çözümleyicisi üreticilerinin de, standartları destekleyen belge çözümleyicilerinin üretilmesi konusunda sorumlulukları bulunmaktadır.

1.5.7 - Aşamalı Geliştirme

Aşamalı geliştirme, modern ve deneyimler sonucunda oluşturulmuş prensiplere dayanan bir web sitesi tasarım yöntemidir. Bu yönteme göre önce sistenin saf (X)HTML kodları yazılır. Bu kodların, günümüzde geçerli en son sürüm (X)HTML spesifikasyonu olan, XHTML 1.1 spesifikasyonuna uygun olması sağlık verilir. Bu kodlar, temel yapılanmayı kapsayacak ve hiçbir şekilde görüntü ve olay yönetimi ile ilgili kodlar içermeyecektir. (X)HTML elementlerinde de, görüntü oluşturma ve olay dinlemesi sağlayacak nitelikler kullanılmayacaktır. Sonuçta, "web sayfasının kök kodları" (core) adı verilen temel belge yapılanması elde edilecektir. Bu kodlama, W3C kod doğrulatıcısı ile doğrulatılarak bir *.(x)htm(l) dosyası halinde saklanacaktır. Web sayfasının kök kodları, her türlü işletim sistemi altında çalışan, her belge çözümleyicisinin, çok arkaik olmayan bir sürümü tarafından okunabilecek niteliktedir. Kök kodlarının görüntüsü, bu aşamada önemli olmayacaktır. İlk aşamada önemli olan, kodların görüntüsü değil kullanıcıların sayfa içeriğine erişilebilirliğidir. Fiziksel engelli olmayan, kabul edilebilir bir belge çözümleyicisi kullanan her okuyucu, bu kodlara erişebilmeli, sayfanın içeriğini okuyabilmeli, navigasyon sağlayabilmeli, form bilgilerini sunabilecek durumda olmalıdır.

Bundan sonraki aşama, kök belgenin görüntüsünü düzenleyecek CSS kodlarının yazılmasıdır. Bugün için, CSS2.1 spesifikasyonu, sayfanın her türlü düzenlemesini yapabilecek güçtedir ve belge çözümleyicilerin hemen tamamı tarafından iyi bir şekilde desteklenmektedir. Görüntü kodları tamamlandığında, ayrı bir *.css dosyasında tutularak sayfaya ilişkilendirilecektir. Böylelikle sayfanın yapılandırma ve görüntülendirme kodları birlerinden ayrılmış olacaktır.

Üçüncü ve son aşama sayfanın CSS kodları ile başarılamayan hareketli görüntülerinin sağlanması ve her türlü program uygulaması ile gerçekleşebilecek hesap ve işlevleri yürütecek JavaScript programlama dili kodlarının hazırlanması ve bunların sayfa ile ile ilişkilendirilerek ayrı bir *.js dosyasında saklanması aşamasıdır. Bu aşamada, artık sayfanın yapılandırma, görüntüleme ve etkileşim sağlama kodları tamamalanmış ve ayrı dosyalarda saklanmakta olacaktır. Bu şekiilde, sayfanın tasarımında, modern tasarım prensipleri tam olarak uygulanmış olacaktır.

Sayfanın tasrımı tamamlandıktan sonra, yayınlanma işlemine geçilcektir. Yayınlanma işlemi tamamlndığında, sayfaının bakım aşaması başlayacaktır. Bakım sırasında, tasarım uygulamadaki sonuçlara göre yeniden düzenlenecek , sayfa tasarımında kullanılan yöntemler gereğinde yenilecek ve tasarım sürekli güncel halde tutulmaya çalışılacaktır.

1.5.8 - Farkedilmeyen Kayboluş

Farkedilmeyen kayboluş prensibi sayfadaki JavaScript programlama dili kodları ile ilgilidir ve daha önce incelediğimiz, Stuart Langridge'in "Engelleme yaratmayan JavaScript" prensibinin bir sonucudur. Bu prensip, belge çözümleyicinin JavaScript desteği olmadığında sayfaya uygulanmış JavaScript programlama dili kodlarının, sayfanın erişebilirliğini engellememesini öngörmektedir.

Farkedilmeyen kayboluş prensibinin uygulanmasında, bilinçli davranmak gerekmektedir. Bir web sayfasında, JavaScript programlaması, CSS kodlamasının başaramayacağı, hareketli resimler, renk değiştiren yazılar, hareketli görsel etkiler için kullanılmış olabilir. Bu kodların uygulanamaması, sayfanın işlevselliğini etkilemeyecektir.

Bu konuda bir diğer olasılık, açılır menüler gibi, sayfanın temel işlevlerinin mutlaka JavaScript programlama dili uygulanması ile yapılması gerekmeyen etkilerin, sayfanın görsel açıdan daha güzel görünmesi için JavaScript programlama dili ile yapılmasıdır. Bu tür uygulamalarda, JavaScript programlama dili çalışmadığında, sitenin örnek olarak navigayon yeteneğinin kaybolması gibi kabul edilmeyecek bir erişilebilirlik kaybı söz konusudur. Farkedilmeyen kayboluş prensibi gereğince, bu tür uygulamalardan vazgeçilecektir. Bu kısıtlamanın, profesyonel web tasarımcıları tarafından, çok sıcak karşılanmaması doğaldır. Fakat, yazılan kodların çalışmaması olasılığından dolayı, bu önleme anlayış gösterilmesi gerekmektedir.

JavaScript programlama dilinin web sitelerinde kullanıldığı üçüncü ve son uygulama grubu, girilen kullanıcı verilerinin değerlendirilmesi, matematiksel hesaplar yapılarak, elde edilen sonuçların açıklanması gibi salt JavaScript yorumlayıcısının çalışmasına bağlı işlevler için kullanılmasıdır. Burada sayfanın işlevi, JavaScript yorumlayıcısının çalışmasına bağlıdır ve bu çalışmadığında sayfa işlevini yapamaz. Yani JavaScript, sayfadan farkedilmeden kaybolamaz. Bu durumda da, önceden belirtildiği gibi, kullanıcının JavaScript yorumlayıcısının çalışmadığı ve sayfanın istenilen işlevi yapamayacağı konusunda uyarılması uygun bir davranış olacaktır.

1.5.9 - Uygulamada Karşılaşılan Sorunlar

Günümüzde, yukarıdaki satırlarda incelenmiş olduğu gibi, Web sayfalarının tasarım standartları W3C çerçevesinde geniş ölçüde tartışılmış ve ortak bir anlayış sağlanmaya çalışılarak yayınlanmaktadır. Ne yazık ki, bu anlayışın gerektirdiği standartlara uyum, belge çözümleyiciler tarafından yeterince değerlendirilememektedir. Belge çözümleyicilerinin standartlara desteği, daima "çok geç, çok yetersiz!" olmuştur. Standartların tam olarak desteklenmemesi nedeni ile günümüzde, standartlara dayalı ve tasarım kurallarının tam olarak uygulandığı, genel kullanıma açık sitelerin yapımı adeta olanaksızdır. Bu konuda, şu anda uygulanabilecek en gerçekçi tutum, tam ideal bir tasarım oluşturduktan sonra, en çok kullanılan belge çözümleyicisi olan MSIE nin son sürümünün destekleyeceği kadar, kodlarda gerilemektir. Ortak olarak desteklenebilecek genel kullanıma açık sitelerin tasarımında, ilk koşul, sadece standartlaştırılmış yöntemlerin kullanılması ve hiçbir özel yönteme tasarımda yer verilmemesi, tasarımın daima denenerek kullanılan yöntemlerin geçerli belge çözümleyiciler tarafından desteklendiğinin kontrol edilmesidir. Sayfanın XHTML yapılandırma kodlarında, olanaklar ölçüsünde ne stil nitelikleri ne de olay dinleyicileri nitelikleri kullanılmamalıdır. Sayfanın sunum kodları ayrı *.css dosyalarında çözümlenmelidir. Javascript kodlarında, olanaklar ölçüsünde hiç sunum stil kodları kullanılmamalıdır. Çok zorunlu olmadıkça, JavaScript kodları ile sıfırdan (on the fly) içerik yaratmak yoluna gidilmemelidir. Bazı durumlarda, örnek olarak veri temellerinden bilgi alınırken, alınacak bilgi sayısı önceden bilinemeyeceğinden, sıfırdan sunum elementlerinin yaratılması ve stil kodlarının JavaScript ile belirtilmesi gerekebilir. Bu gibi çok zorunlu durumlar dışında, JavaScript kodları, ne yeni içerik yaratılması, ne navigasyon, ne de stil düzenlenmesi için kullanılmamalıdır. Doğal olarak bu kurallar, çok idealize haller için ve olanaklar ölçüsünde uygulanacaktır. Tasarımcılar kendilerince uygun yöntemleri bu uyarıların ışığında özgürce uygulamaya devam edeceklerdir.