JavaScript Uygulaması
- Önceki Sayfa JavaScript Tarihi
- Sonraki Sayfa ECMAScript Grameri
JavaScript'in çekirdek ECMAScript, dillerin gramerini ve temel nesnelerini tanımlar;
DOM, web içeriğiyle işlemek için yöntemleri ve arayüzleri tanımlar;
BOM, tarayıcıyla etkileşim kurma yöntemleri ve arayüzlerini tanımlar.
ECMAScript, DOM ve BOM
ECMAScript önemli bir standart olsa da, bu, JavaScript'in tek parçası değildir, tabii ki, standartlaştırılan tek parça da değildir. Aslında, tam bir JavaScript uygulaması, aşağıdaki 3 farklı bölümden oluşur:

ECMAScript
ECMAScript, herhangi bir belirli tarayıcıya bağlı değildir; aslında, herhangi bir kullanıcı girdi-çıkış yönteminden bahsetmemektedir (bu, C gibi dillerle farklıdır, bu tür görevleri tamamlamak için harici kütüphanelere bağımlıdır). Peki ECMAScript nedir? ECMA-262 standartının (2. bölüm) açıklaması aşağıdaki gibidir:
“ECMAScript, farklı türdeki ev sahibi ortamlar için temel betik programlama yetenekleri sağlayabilir, bu yüzden temel betik dili, belirli bir ev sahibi ortamıyla ayrı olarak belirlenmiştir... ...”
Web tarayıcıları ECMAScript için bir ev sahibi ortamdır, ancak tek ev sahibi ortam değildir. Aslında, ECMAScript implementasyonunu barındıran sayısız farklı çeşitli ortam vardır (örneğin Nombas ScriptEase ve Macromedia'nın Flash ve Director MX'de kullanılan ActionScript). Peki ECMAScript, tarayıcı dışında neyi belirler?
Kısaca, ECMAScript aşağıdaki içeriği tanımlar:
- Dilbilgisi
- Tip
- İfade
- Anahtar kelimeler
- Koruma kelimeleri
- İşleç
- Nesne
ECMAScript sadece bir tanımdır, betik dilinin tüm özelliklerini, yöntemlerini ve nesnelerini tanımlar. Diğer diller, ECMAScript'i fonksiyonel bir temel olarak gerçekleştirebilir, JavaScript böyle bir örnektir:

Her tarayıcı kendi ECMAScript arayüz implementasyonuna sahiptir ve bu implementasyon DOM ve BOM'yu (daha sonra bölümlerde detaylandırılacak) içerir. Elbette, ECMAScript'i genişleten ve genişleten diğer implementasyonlar da vardır, örneğin Windows Scripting Host (WSH), Macromedia'nın Flash ve Director MX'deki ActionScript'i ve Nombas ScriptEase'i.
1. ECMAScript sürümleri
ECMAScript, çeşitli farklı sürümlere ayrılmıştır ve bu sürümler ECMA-262 adlı bir standartta tanımlanmıştır. Diğer standartlar gibi, ECMA-262 de düzenlenir ve güncellenir. Ana güncellemeler olduğunda, bir standartın yeni bir sürümü yayınlanır. En yeni ECMA-262 sürümü 5.1'dir ve 2011 yılının Haziran ayında yayınlanmıştır.
ECMA-262'nin birinci sürümü temel olarak Netscape'nin JavaScript 1.1 ile aynıdır, ancak tarayıcıyla ilgili tüm kodları sildi ve ayrıca bazı küçük ayarlamalar yapıldı. İlk olarak, ECMA-262, Unicode standartlarına olan desteği gerektirir (çünkü çok dilli desteği sağlar). İkincisi, nesnelerin platform bağımsız olmasını gerektirir (Netscape'nin JavaScript 1.1, örneğin Date nesnesi gibi, platforma bağımlı farklı nesne implementasyonlarına sahiptir). Bu, JavaScript 1.1 ve 1.2'nin neden ECMA-262'nin birinci sürümüne uygun olmadığının başlıca nedenlerinden biridir.
ECMA-262 ikinci sürümündeki güncellemelerin büyük bir kısmı编辑性的。Bu standart güncellemesi, ISO/IEC-16262 ile tam olarak uyumlu olmak amacıyla yapıldı ve içerik eklenmedi, değiştirildi veya kaldırılmadı. ECMAScript genellikle ikinci sürüme uymaz.
ECMA-262 üçüncü sürümü, bu standardın ilk gerçek güncellemesi oldu. Dizgi işleme, hata tanımları ve sayısal çıktı güncellemeleri sağladı. Ayrıca, düzenli ifadeler, yeni kontrol ifadeleri, try...catch hata yönetimi desteği ve standart ulusallaştırmak için yapılan bazı küçük değişiklikler ekledi. Genel olarak, bu, ECMAScript'in gerçek bir programlama dili olarak tanımlandığı anlamına gelir.
2. ECMAScript uyumluluğu nedir
ECMA-262'de, ECMAScript uyumluluğu (conformance) açık bir şekilde tanımlanmıştır. Bir betik dili, aşağıdaki dört temel ilkeyi karşılamalıdır:
- Uygun gerçekleştirmeler, ECMA-262'te tanımlanan tüm 'türler, değerler, nesneler, özellikler, fonksiyonlar ve program dilbilgisi ve semantikleri'ni desteklemelidir (ECMA-262, ilk sayfa)
- Uygun gerçekleştirmeler, Unicode karakter standartlarını (UCS) desteklemelidir
- Uygun gerçekleştirmeler, ECMA-262'te belirtilmemiş olan 'ek türler, değerler, nesneler, özellikler ve fonksiyonlar' ekleyebilir. ECMA-262, bu ekleri normda belirtilmemiş yeni nesneler veya nesnelerin yeni özellikleri olarak tanımlar
- Uygun gerçekleştirmeler, ECMA-262'te tanımlanmamış olan 'program ve düzenli ifade dilbilgisi'ni destekleyebilir (yani içsel düzenli ifade desteklemeyi değiştirebilir veya genişletebilir)
Tüm ECMAScript gerçekleştirmeleri yukarıdaki standartlara uygun olmalıdır.
3. Web tarayıcılarındaki ECMAScript desteği
JavaScript 1.1 içeren Netscape Navigator 3.0 1996 yılında yayınlandı. Sonra, JavaScript 1.1 normu EMCA'ya yeni bir standart taslağı olarak sunuldu. JavaScript'in patlayıcı popülerliği ile Netscape, 1.2 sürümünü geliştirmeye başladı. Ancak, bir sorun vardı, ECMA Netscape'nin taslağını kabul etmedi. Netscape Navigator 3.0'nun yayınlanmasından kısa bir süre sonra, Microsoft IE 3.0'yı yayınladı. Bu sürümdeki IE, JScript 1.0 (Microsoft'un kendi JavaScript gerçekleştirmesi için kullandığı ad) içermekteydi ve başlangıçta JavaScript 1.1 ile karşılaştırılabilir olarak planlanıyordu. Ancak, belgelerin eksikliği ve bazı yanlış yinelenen özellikler nedeniyle, JScript 1.0, JavaScript 1.1'in seviyesine ulaşamadı.
ECMA-262'in ilk sürümü nihai hale gelmeden önce, JavaScript 1.2 içeren Netscape Navigator 4.0'nın 1997 yılında yayınlanması, o yılın sonlarında ECMA-262 standartının kabul edilmesi ve standartlaştırılmasıyla gerçekleşti. Bu nedenle, JavaScript 1.2 ECMAScript'in ilk sürümü ile uyumlu değildir, oysa ECMAScript'in JavaScript 1.1'e dayalı olması gerekiyordu.
JScript'in bir sonraki adımı, IE 4.0'ta eklenen JScript 3.0'tı (2.0 sürümü IIS 3.0 ile birlikte yayınlandı, ancak tarayıcıya dahil edilmedi). Microsoft, JScript 3.0'un dünyanın ilk gerçek ECMA standartına uygun betik dili olduğunu büyük bir şekilde tanıttı. O zamanlar, ECMA-262 henüz nihai hali için karar verilmediği için JScript 3.0 da JavaScript 1.2 ile aynı kaderi paylaştı - nihai ECMAScript standartına uygun olmadı.
Netscape, Netscape Navigator 4.06'ta JavaScript uygulamasını güncelledi. JavaScript 1.3, Netscape'nin ECMAScript'in ilk sürümüne tamamen uygun olmasını sağladı. Netscape, Unicode standartlarına destek ekledi ve tüm nesneler, JavaScript 1.2'de tanıtılan yeni özellikleri korurken platform bağımsızlık sağladı.
Netscape, kaynak kodunu Mozilla projesi olarak kamuoyuna açıkladığında, JavaScript 1.4'nin Netscape Navigator 5.0'ya entegre edilmesi planlanıyordu. Ancak, bu çalışmayı bozan bir ileriye dönük karar - Netscape'in kodunu tamamen yeniden tasarlamak - bu çalışmayı bozdu. JavaScript 1.4 sadece Netscape Enterprise Server'ın sunucu tarafı betik dili olarak yayınlandı ve daha sonra tarayıcıya dahil edilmedi.
Şu anda, tüm popüler Web tarayıcıları ECMA-262 üçüncü sürümüne uygundur.
Aşağıdaki tablo, çoğu popüler Web tarayıcısındaki ECMAScript desteğini sıralar:
Tarayıcı | DOM Uyumluluğu |
---|---|
Netscape Navigator 2.0 | - |
Netscape Navigator 3.0 | - |
Netscape Navigator 4.0 - 4.05 | - |
Netscape Navigator 4.06 - 4.79 | 1. Baskı |
Netscape 6.0+ (Mozilla 0.6.0+) | 3. Baskı |
Internet Explorer 3.0 | - |
Internet Explorer 4.0 | - |
Internet Explorer 5.0 | 1. Baskı |
Internet Explorer 5.5+ | 3. Baskı |
Opera 6.0 - 7.1 | 2. Baskı |
Opera 7.2+ | 3. Baskı |
Safari 1.0+/Konqueror ~ 2.0+ | 3. Baskı |
DOM
DOM (belge nesne modeli), HTML ve XML'nin uygulama arayüzü (API)dır. DOM, tüm sayfayı düğüm hiyerarşisinden oluşan bir belge olarak planlar. HTML veya XML sayfasının her parçası, bir düğümün türevidir. Aşağıdaki HTML sayfasını göz önünde bulundurun:
<html> <head> <title>Örnek Sayfa</title> </head> <body> <p>merhaba dünya!</p> </body> </html>
Bu kod, DOM ile bir düğüm hiyerarşi haritası olarak çizilebilir:

DOM, belgeyi bir ağaç olarak temsil ederek, geliştiricilerin belge içeriği ve yapısına ebediyen kontrol sağlar. DOM API'si ile kolayca düğümü silmek, eklemek ve değiştirmek mümkündür.
1. Neden DOM'ün vazgeçilmez olması gerekiyor
IE 4.0 ve Netscape Navigator 4.0, farklı formlarındaki dinamik HTML (DHTML)'yi desteklemeye başladığından beri, geliştiriciler web sayfasını yeniden yüklemeksizin onun görünümünü ve içeriğini değiştirebilir hale geldiler. Bu, Web teknolojisinin büyük bir atılımıydı, ancak aynı zamanda büyük sorunlar da getirdi. Netscape ve Microsoft kendi DHTML'lerini geliştirdiler ve Web geliştiricilerinin sadece bir HTML sayfasını yazarak tüm tarayıcılarda erişilebilir hale gelmesini sonlandırdılar.
Endüstri, Web'in çapraz platform özelliğini korumak için bir şey yapmalıdır, çünkü Netscape ve Microsoft'un böyle davranmalarının Web'in iki bağımsız parçaya ayrılacağından endişe ediyorlar. Her bir parça yalnızca belirli tarayıcılar için uygundur. Bu nedenle, Web iletişim standartlarını belirlemekten sorumlu grup W3C (World Wide Web Consortium), DOM'nin oluşturulmasına başladı.
2. DOM'nin her seviyesi
DOM Level 1, W3C tarafından 1998 yılının Ekim ayında önerilmiştir. İki modülden oluşur, yani DOM Core ve DOM HTML. İlk ikisi, belgenin herhangi bir kısmına erişmek ve işlemek için XML tabanlı bir yapı haritası sağlar; ikincisi, DOM Core'ya HTML özel objeleri ve yöntemler ekleyerek genişletir.
Dikkat edin, DOM yalnızca JavaScript'e özgü değildir, aslında birçok diğer dil de onu gerçekleştirmiştir. Ancak, Web tarayıcılarındaki DOM ECMAScript ile gerçekleştirilmiştir ve artık JavaScript dilinin büyük bir parçasıdır.
DOM Level 1 sadece bir hedef, belge yapısını planlamak olan bir hedefdir, DOM Level 2'nin hedefi daha geniş çaplıdır. Orjinal DOM'a eklenen genişletmeler, fare ve kullanıcı arayüzü olaylarını (DHTML'nin bu konuda zengin desteği), alanı ve gezinti (DOM belgesini tekrar tekrar çalışan yöntemler) destekler ve CSS'ye (katmanlı stiller) destek eklenerek nesne arayüzü ile genişletilmiştir. Level 1 tarafından tanıtılan orjinal DOM Core, XML ad alanlarına da destek eklemiştir.
DOM Level 2, yeni arayüz türlerini işlemek için bazı DOM yeni modülleri tanıtmıştır:
- DOM Görünümü - Belgenin çeşitli görünümlerini (yani CSS stillemesi öncesi ve sonrası belge) takip eden arayüz
- DOM Olayları - Olay arayüzünü tanımlar
- DOM Stili - CSS tabanlı stilleri işleyen arayüzü tanımlar
- DOM Gezinti ve Alanı - Belge ağacını gezinmeyi ve işlemeyi tanımlayan arayüz
DOM Level 3, belgenin yüklenmesi ve tutulmasını birleştiren ve belgenin doğrulanmasını sağlayan (DOM Doğrulama olarak adlandırılır) yöntemleri içeren bir şekilde belgeyi yüklemeyi ve tutmayı (Yeni modül DOM Yükleme ve Kaydetme olarak adlandırılır) ve DOM'u daha da genişletmiştir. Level 3'te, DOM Core, tüm XML 1.0 özelliklerini desteklemek için genişletilmiştir, bu da XML Infoset, XPath ve XML Base içerir.
DOM öğrenirken, DOM Level 0'ya atıfta bulunan bazı insanlarla karşılaşabilirsiniz. Dikkat edin, DOM Level 0 adı verilen bir standart yoktur, bu sadece DOM'un tarihi bir referans noktasıdır (DOM Level 0, IE 4.0 ve Netscape Navigator 4.0'ta desteklenen temel DHTML'yi ifade eder).
3. Diğer DOM
DOM Core ve DOM HTML'nin yanı sıra, diğer bazı diller kendi DOM standartlarını yayınlamıştır. Bu diller tümü XML tabanlıdır ve her DOM, ilgili dil için özgü yöntemler ve arayüzler ekler:
- Ölçeklenebilir vektörel dil (SVG) 1.0
- Sayısal işaretleme dili (MathML) 1.0
- Eşzamanlı multimedya entegrasyon dili (SMIL)
Yorum:Daha fazla bilgi öğrenmek istiyorsanız, CodeW3C'nin SMIL Eğitimi ve SVG Eğitimi。
Ayrıca, diğer diller de kendi DOM gerçekleştirmelerini geliştirmiştir, örneğin Mozilla'nın XML kullanıcı arayüzü dili (XUL). Ancak, yukarıda belirtilen diller W3C'nin önerilen standartlarıdır.
4. Web tarayıcılarındaki DOM desteği
DOM, Web tarayıcıları tarafından gerçekleştirilmeye başlanmadan önce bile bir standarttı. IE'nin DOM'a ilk denemesi 5.0 sürümünde oldu, ancak gerçekten DOM desteği 5.5 sürümünden sonra geldi, IE 5.5 DOM 1.0'yı gerçekleştirdi. Ondan beri, IE yeni DOM işlevlerini eklememiştir.
Netscape, Netscape 6 (Mozilla 0.6.0) kadar DOM desteği eklemiştir. Şu anda, Mozilla en iyi DOM desteğini sunuyor, tamamen 1. Seviye, neredeyse tamamen 2. Seviye ve bir kısmı 3. Seviye'yi gerçekleştirmiştir. (Mozilla geliştirme ekibinin hedefi, standartlarla %100 uyumlu bir tarayıcı oluşturmak, çalışmaları sonuç verdi.)
Opera, DOM desteğini 7.0 sürümüne kadar eklemiş, Safari de DOM 1.0'nın büyük bir kısmını gerçekleştirmiştir. Hepsi IE 5.5 ile aynı seviyede, bazı durumlarda hatta IE 5.5'nin bile üstünde. Ancak, DOM desteği açısından tüm tarayıcılar Mozilla'dan çok geride. Aşağıdaki tablo, yaygın tarayıcıların DOM desteğini sıralar.
Tarayıcı | DOM Uyumluluğu |
---|---|
Netscape Navigator 1.0 - 4.x | - |
Netscape 6.0+ (Mozilla 0.6.0+) | 1. Seviye, 2. Seviye, 3. Seviye (kısmen) |
IE 2.0 - 4.x | - |
IE 5.0 | 1. Seviye (en az) |
IE 5.5+ | 1. Seviye (neredeyse tamamen) |
Opera 1.0 - 6.0 | - |
Opera 7.0+ | 1. Seviye (neredeyse tamamen)、2. Seviye (kısmen) |
Safari 1.0+/Konqueror ~ 2.0+ | 1. Seviye |
Yorum:DOM'nin bilgilerini daha da derinlemesine öğrenmek istiyorsanız, CodeW3C'nin HTML DOM Eğitimi ve XML DOM Eğitimi。
BOM
IE 3.0 ve Netscape Navigator 3.0, BOM (Browser Object Model) adlı bir özellik sunmuştur, bu sayede tarayıcı pencerelerine erişim ve işlem yapılabilir. BOM ile geliştiriciler, pencereyi taşımak, durum çubuğundaki metni değiştirmek ve sayfa içeriği ile doğrudan ilgili olmayan diğer eylemler gerçekleştirebilirler. BOM'un kendine özgü ve genellikle şüphe götürür的一面, yalnızca JavaScript'in bir parçası olarak, herhangi bir ilgili standarda sahip olmamasıdır.
BOM, tarayıcı penceresi ve çerçeveleri ile ilgilidir, ancak genellikle tarayıcıya özel JavaScript genişletmeleri BOM olarak görülür. Bu genişletmeler arasında:
- Yeni bir tarayıcı penceresi açmak
- Tarayıcı penceresini taşımak, kapatmak ve pencere boyutunu ayarlamak
- Web tarayıcısı ayrıntılarını sağlayan konum nesnesi
- Kullanıcı ekran çözünürlüğü ayrıntılarını sağlayan ekran nesnesi
- Cookie desteği
- IE BOM'yu genişletti ve ActiveXObject sınıfını ekledi, bu da ActiveX nesnelerini JavaScript ile örnekleyebilir
İlgili BOM standartı olmaması nedeniyle, her tarayıcı kendi BOM implementasyonunu sahiptir. Bazı gerçek standartlar, bir pencere nesnesi ve bir navigasyon nesnesi gibi, ancak her tarayıcı bu nesneler veya diğer nesneler için kendi özelliklerini ve yöntemlerini tanımlayabilir.
Görüş:
- Önceki Sayfa JavaScript Tarihi
- Sonraki Sayfa ECMAScript Grameri