Tarayıcılar Nasıl etkilenir
Başvuru (gönderim) doğru öğrenmenin en zor kısmıdır.
Gerekli olan yöntemlerin, değişik tarayıcıların hepsinde çalıştığına emin olunması gerekir. Burada en çok kullanılan tarayıcılardan Javascript kullananların listesi vardır.
En yüksek Javascript desteği Opera ve Mozilla tarayıcılarında vardır. Ama pek çok kod zayıf yazılmış olduğundan uygulanabilirliği birkaç tarayıcıyla sınırlıdır. Maalesef IE güzel bir Javascript desteğine sahip değildir. Çoğu kez var olan özellikler de standartlarla uyumlu değildir. Pek çok kişi standart olmayan eklentilere dayanarak kod yazar. Pek çoğu kullandıkları özelliklerin standart dışı olduğunu bile bilmezler. Başka tarayıcılar da bu eklentilerin bazılarını uyarlamış olabilirler. Belki yalnız kodların çalışmasına yetecek kadarı uyarlanmıştır.
Burada incelenebilecek kadar çok tarayıcıya bakılmış ve kodlama karşısından nasıl davrandıkları gözlenip açıklama sayfaları hazırlanmıştır. Buraya yazılanların pek çok tarayıcıda çalışır olabilmesine gayret edilmiştir. Örneklerde standart sürüm kullanılmış, ancak standart sürüm yetersiz olduğunda dışına çıkılmıştır.
Nesne Sıradüzeni
Bir sayfadaki öğelere (nesnelere) erişim, nesnel yapısına ya da sıradüzene göre olur. En üst düzeydeki belge çoğu zaman 'document' olur. Daha sonraki belge, yapısına göre değişir. Bir çok öğeye (HTML biçimleri) dördüncü kuşak tarayıcılarda erişilemez bile. Aşağıda erişilenlerin hangi öğeler olduğu gösterilmiştir:
- body, 'document' ile erişilir
- div, tarayıcı bağımlı erişimler vardır, 'id' biçimiyle hedeflenebilir.
- span, tarayıcı bağımlı erişimler vardır. 'id' biçimiyle hedeflenebilir (bu erişimleri hiç kullanmamak daha doğru olabilir. Dördüncü kuşak tarayıcılarda hatalar vardır. Kullanırsanız ortaya çıkabilir).
- img, belge nesnesiyle erişilebilir, hedefleme 'name' ile yapılır.
- a, belge nesnesiyle erişilebilir, hedefleme dizin sırasıyla (index) ile olur.
- form, belge nesnesiyle erişilebilir, hedefleme 'name' ile yapılır.
- input, select or textarea, form ile erişilebilir ve hedefleme 'name' ile yapılır
Birçok tarayıcıda, bu bölümler yazıldıktan hemen sonra kodlama kullanıma açıktır, ama bazı eski tarayıcılarda kodlama çalışmasını bitirinceye dek (</script> biçiminden sonra) açık olmayabilirler.
Belgenin ne zaman yüklendiğini 'window.onload' olayıyla öğrenebilirsiniz (HTML'de nasıl yazıldığı aşağıda gösterilmiştir).
<body onload= ...).
Tuhaftır ki, Gecko tarayıcılar (Mozilla/Firefox/Netscape 6+) tarayıcılarında öğenin başlangıç biçimi ve kodlama arasında en az bir karakter olmalıdır. Öğe resim bile olsa, ya da kodlama sayfa yüklenmeden açık olmaz.
Başvurulabilen birkaç öğe daha vardır. Tüm nesneler, özellikler, toplamalar ve yöntemler Javascript nesnelerine başvurur.
Tüm belge parçalarına erişebilen (bağlar hariç) soysal başvuru işlevi yazıldığında sonraki yazıları kısa kesmeden inceleyin. Gerçekten anlarsınız ki, incelemeden körü körüne yazılan kodu kullanmamak gerekir.
Başvuru çelişkilerini önleme
Unutmayın ki Javascript adları küçük-büyük harf duyarlıdır. Adlar a-z ve A-Z ya da _ ile başlar ve a-z, A-Z, 0-9 ve _ karakterlerini içerir. Ad kurallarındaki alışkanlık adların yaptığı işe uygun adlandırılmalıdır. Eğer ad bir kelimeden uzunsa, alt çizgi kullanmak iyidir. Genelde herkes ilk kelime dışındaki her kelimenin ilk harfini büyük yazar.
Örneğin sizin hakkınızda yazı içeren bir değişkenin adı için 'hakkimizdaki yazi' olacaksa, boşlukları kaldırıp, boşlukları izleyen kelimenin ilk harfi büyük yapılınca değişkenin adı 'hakkimizdakiYazi' biçimini alır.
Başvuru çelikşilerini önlemek için, Javascript nesneler ya da belge öğeleri aynı ad verilmemeli (giriş alan adları hariç).
Değişkenler, işlevler, HTML biçimlerinin 'names' ve 'id' değerleri için ad seçerken, bir dizi saklı sözcük vardır. Bunlar:
abstract, arguments, boolean, break, byte, case, catch, char, class, const, continue, debugger, default, delete, do, double, else, enum, export, extends, false, final, finally, float, for, function, goto, if, implements, import, in, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, throw, throws, transient, true, try, typeof, var, void, volatile, while, with.
Ek olarak, var olan özelliklerin ve yöntemlerin enversel nesnelerin adları kullanılmamalıdır (nesne adlarını ibilhassa ezmek isterseniz aynı adı kullanabilirsiniz).