Javascript dili baÅlangıçta internet tarayıcıları için oluÅturuldu. O zamandan beri geliÅtirildi ve birçok kullanımı ve platformu ile bir dil haline geldi.
Bir platform tarayıcı, bir web sunucusu, bir çamaÅır makinesi veya baÅka bir sunucu olabilir. Bunların her biri platforma özgü fonksiyonlar saÄlar. JavaScript özelliklerinde bunu bir sunucu ortamı olarak adlandırılır.
Bir sunucu ortamı dil çekirdeÄine ek olarak platforma özgü nesneler ve fonksiyonlar saÄlar. İnternet tarayıcıları internet sayfalarını kontrol etmek için bir yol sunar. Node.js sunucu tarafı özellikleri vb.
İÅte javascriptin internet tarayıcısında çalıÅtıÄında elimizde ne olduÄunu gösteren bir kuÅ bakıÅı.
window denilen bir âkökâ nesnesi var. İki rolü vardır.
- Birincisi, Javascript kodu için evrensel bir nesnedir. bölümde açıklandıÄı gibi info:global-object
- İkincisi, âtarayıcı penceresiniâ temsil eder ve kontrol etmek için yöntemler saÄlar.
ÃrneÄin, burada windowu evrensel bir nesne olarak kullandık.
function selamSoyle() {
alert("Selam");
}
// evrensel deÄiÅkenler `window` özellikleri olarak eriÅilebilir.
window.selamSoyle();
Ve burada windowu pencerenin yüksekliÄini görmek için tarayıcı penceresi olarak kullandık:
alert(window.innerHeight); // İç pencere yüksekliÄi
Daha fazla windowa özgü yöntemler ve özellikler var, bunlardan daha sonra bahsedeceÄiz.
Document Object Model (DOM) (Belge Nesneli Modeli)
document nesnesi sayfa içeriÄine eriÅimi saÄlar. Sayfada herhangi bir Åeyi deÄiÅtirebilir ya da oluÅturabiliriz.
ÃrneÄin:
// arka plan rengini kırmızı olarak deÄiÅtirelim.
document.body.style.background = 'red';
// 1 saniye sonra tekrar deÄiÅtirelim
setTimeout(() => document.body.style.background = '', 1000);
Burada document.body.style kullandık fakat daha fazla parametreler var. Ãzellikleri ve yöntemleri tanımlamada açıklanmıÅtır. Tesadüf ki, bunu geliÅtiren iki grup vardır.
DOM standartları : https://dom.spec.whatwg.org
Eskiden hiçbir standart yoktu. â her tarayıcı her ne istiyorsa onu uyguladı. Bu yüzden farklı tarayıcıların aynı Åeyler için farklı metotları ve özellikleri vardı. GeliÅtiriciler her bir tarayıcı için farklı kodlar yazmak zorunda kalıyordu. Karanlık daÄınık zamanlar.
Åimdi bile bazen tarayıcılara özgü özellikleri kullanan ve uyumsuzluklar etrafında çalıÅan eski kodlarla çalıÅabiliriz ama bu derste modern Åeyler kullanacaÄız: Onlara ihtiyacın olana kadar eski Åeyler öÄrenmeye gerek yok (Åansın yüksek deÄil).
Daha sonra herkesi ortak noktada toplamak için DOM standartı belirlendi. İlk versiyon âDOM Level 1â idi, sonra DOM Level 2 tarafından geniÅletildi, sonra DOM Level 3 ve Åimdi DOM Level 4. WhatWG grubundan insanlar sürümden sıkıldılar ve numara olmadan sadece DOM olarak adlandırdılar. Ãyleyse biz yapacaÄız.
DOM özelliÄi bir belgenin yapısını açıklar ve onu iÅlemek için nesne saÄlar. Onu kullanan tarayıcı olmayan araçlarda var.
ÃrneÄin, HTML sayfalarını indiren ve iÅleyen sunucu-taraflı araçlar. Ancak DOM özellikleri sadece bir bölümü destekleyebilir.
CSS kuralları ve stil sayfaları HTML yapısına benzemez. Bu yüzden nesneler olarak nasıl temsil edildiklerini ve nasıl okunup yazılacaÄını açıklayan bir tanımlama vardır. CSSOM
CSSOM, belgi için stil kurallarını deÄiÅtirdiÄimizde DOM ile birlikte kullanılıyor. Pratikte olsa CSSOM nadiren gereklidir. Ãünkü genelde CSS kuralları statiktir. Javascriptâe CSS kuralları ekleme/çıkarma nadiren ihtiyacımız var. Bu yüzden onu kapatmayız.
BOM (Tarayıcı Nesne Modeli)
HTMLâin bir parçası (BOM), belge dıÅında her Åey ile çalıÅmak için tarayıcı (sunucu ortamı) tarafından saÄlanan ek nesnelerdir.
ÃrneÄin:
- navigator nesnesi tarayıcı ve iÅletim sistemi hakkında arkaplan bilgisi saÄlar. Birçok özelliÄi var, fakat en çok bilinen ikisi Åunlardır:
navigator.userAgentâ mevcut tarayıcı hakkında, venavigator.platformâ platform hakkında (Windows/Linux/Mac arasında farklılık olacaÄından yardım gerekebilir). - location nesnesi geçerli adresi okumayı ve tarayıcıyı yenisine yönlendirmeyi saÄlar
location nesnesini bu Åekilde kullanabiliriz:
alert(location.href); // Geçerli URL'yi gösterir
if (confirm("wikipedia'ya git?")) {
location.href = 'https://tr.wikipedia.org'; // Tarayıcı baÅka bir URL'ye yönlendirir.
}
alert/confirm/prompt fonksiyonları da BOMâun bir parçasıdır: Bunlar doÄrudan belge ile ilgili deÄildir ancak kullanıcı ile tarayıcının saf iletiÅim kurmasını temsil eder.
BOM genel kısmıdırHTML specification.
Evet, doÄru duydun. https://html.spec.whatwg.orgâdeki HTML özelliÄi yalnızca âHTML diliâ (etiketler, nitelikler) ile ilgili deÄil, aynı zamanda birçok nesne, yöntem ve tarayıca özgü DOM uzantılarını da kapsar. Bu "geniÅ anlamda HTML"dir.
Ãzet
Standar hakkında konuÅurken:
- DOM tanımlaması
- belge yapısını, manipülasyonları, olayları açıklar, Bkz https://dom.spec.whatwg.org.
- CSSOM tanımlaması
- stil sayfaları ve stil kurallarını açıklar, bunlarla yapılan manipülasyonları ve belge baÄlanmalarını saÄlar, Bkz https://www.w3.org/TR/cssom-1/.
- HTML tanımlaması
- HTML dilini (etiketler vs.) ve ayrıca BOM (tarayıcı nesne modeli) â çeÅitli tarayıcı fonksiyonlar:
setTimeout,alert,locationvb açıklar, Bkz https://html.spec.whatwg.org. DOM özelliÄini alır ve birçok ek özellik ve yöntemle geliÅtirir.
Lütfen yukarıdaki baÄlantıları kontrol edin. Ãünkü öÄrenecek birçok Åey var. Her Åeyi hatırlamak imkansızdır.
Bir özellik ve yöntem hakkında okumak istediÄinizde â Mozilla kılavuzu https://developer.mozilla.org/en-US/search güzel kılavuzlardan bir tanesidir, ancak ilgili özelliklerin okunması daha iyi olabilir: daha karmaÅık ve okunması uzun fakat temel bilginiz eksiksiz ve saÄlam hale gelecektir.
Åimdi DOM öÄrenmeye baÅlayacaÄız. Ãünkü belge, kullanıcı arayüzünde önemli bir rol oynuyor, ayrıca onunla çalıÅmak en karmaÅık kısımdır.
Yorumlar
<code>kullanınız, birkaç satır eklemek için ise<pre>kullanın. EÄer 10 satırdan fazla kod ekleyecekseniz plnkr kullanabilirsiniz)