JavaScript Temelleri

Bölüm 18

Belge Çözümleyicisi Nesne Modeli (Browser Object Model) (BOM)

Bölüm 18 Sayfa 9

18.10 - window Nesnesinin history Alt Nesnesi (Oturum Tarihçesi)

İnceleyeceğimiz window nesnesinin history alt nesnesi, dizi benzeri bir nesnedir. Bu nesne, bir dizi elemanları gibi, oturum süresince ziyaret edilmiş olan sitelerin adresini tutar, fakat bu adreslerin açık adrslerine doğrudan erişim olanağı vermez. Kullanıcılar sadece bu nesnenin metotlarını kullanarak oturum içinde ziyaret ettikleri sitelere yeniden erişebilirler.

JavaScript history alt nesnesinin tek özelliği, length özelliğidir. Bu özellik aynı dizilerin uzunluk özelliği gibidir ve oturum başlangıcından beri ziyaret edilen sitelerin sayısını tutar. Bu alt nesnenin üç metodu vardır ve bunlar back(), forward() ve go() metotlarıdır.

JavaScript history alt nesnesi daha çok belge çözümleyicinin geri dönüş butonunu simüle etmek için kullanılır.

JavaScript history alt nesnesinin elemanları silinemez. Bu elemanlar, yai ziyret edilmiş site URI bilgileri sadece belge çözümleyicilerin menü seçekleri kullanılarak, veya JavaScript pseudo-protokolu gibi istemeksizin oturum tarihçesini tahrip eden uygulamalar nedeni ile kısmen veya tamamen elden çıkabilir.

18.10.1 - history Nesnesinin Özellikleri

JavaScript window.history nesnesinin sadece bir tane length özelliği bulunmaktadır. Bu özellik aşağıda incelenmiştir.

18.10.1.1 - history Nesnesinin length Özelliği

Bu özelliğin değeri, oturum başlangıcından başlanarak ziyaret edilmiş olan sitelerin toplam sayısıdır. Kullanımı,

window.history. length
		

şeklindedir. Oturum süresince toplam ziyaret edilmiş olan sitelerin sayısının algılandığı bir JavaScript programı aşağıda görülebilir:

/* <![CDATA[  */

function toplamSite() {
var toplamSayı = window.history. length;
			
sonuçYaz ( 'Oturum Başından Beri Ziyaret Edilen Sitelerin Toplam Sayısı : ' , toplamSayı);

}


// Eğer Belge Çözümleyici FireFox ise (GECKO Motoru)

if (window.addEventListener) {
window.addEventListener('load', toplamSite , false);
}

// Eğer Belge Çözümleyici Internet Explorer İse

else if (window.attachEvent) {
window.attachEvent('onload', toplamSite);
}

/* ]]>  */
		

Bu programın bağlantılı olduğu sayfada verdiği sonuç:

olarak gerçekleşmektedir.

18.10.2 - window.history Nesnesinin Metotları

18.10.2.1 - forward() Metodu

Bu metot, sayfayı, oturum tarihçesi listesinde bir ileri sayfaya götürür. Eğer bulunulan sayfa oturum tarihçesi listesindeki en son URI değeri ise, bir hata oluşturulmaz fakat bir etki de yaratılmaz. Bu metot çoğunlukla ileri geri haraketlerle, oturum tarihçesi listesinde hareket edilmiş olunan durumlarda işlevseldir.

JavaScript window.history.forward() metodunun etkisi, belge çözümleyicinin ileri butonun tıklanması veya, window.history.go(1); ifadesi ile aynıdır.

Bu metot geriye bir değer döndürmez.

18.10.2.2 - back() Metodu

Bu metot, sayfayı, oturum tarihçesi listesinde bir geri sayfaya götürür. Eğer bulunulan sayfa oturum tarihçesi listesindeki ilk URI değeri ise, bir hata oluşturulmaz fakat bir etki de yaratılmaz. Bu metot çoğunlukla ileri geri haraketlerle, oturum tarihçesi listesinde hareket edilmiş olunan durumlarda işlevseldir.

JavaScript window.history.back() metodunun etkisi, belge çözümleyicinin geri butonun tıklanması veya, window.history.go(-1); ifadesi ile aynıdır.

Bu metot geriye bir değer döndürmez.

18.10.2.3 - go() Metodu

Bu metot, sayfayı, oturum tarihçesi listesinde geri veya ileri birsayfaya götürebilir. Eğer bulunulan sayfa oturum tarihçesi listesindeki ilk URI değeri ise, bir hata oluşturulmaz fakat bir etki de yaratılmaz. Bu metot çoğunlukla ileri geri haraketlerle, oturum tarihçesi listesinde hareket edilmiş olunan durumlarda işlevseldir.

JavaScript window.history.go(parametre)metodunun parametresi bir tamsayı veya bir karakter dizigisi (String) olabilir. Parametre saısal olursa -1 bir geri sayfayı belirtir ve bunun etkisi belge çözümleyicinin geri butonun tıklanması veya, window.history.back() ifadesinin etkisi ile aynı olacaktır. Bu konuda bu çalışmada birçok sayfada navigasyon işlevini bu metodun sağladığı görülmüştür. Bu konudaki örneklerden biri, JavaScriptDeneme.htm sayfasıdır.

Bu metodun sözel parametresi, Tam bir URI adresi olabilir. Buna rağmen metodun bu tip kullanılması fazla yaygın değildir. Aynı işlevi, window.location.replace(URI); metodu daha iyi yerine getirebilir. Bu rağmen replace() metodu, history zincirini tahrip eder ve ileri-geri düğmeleri artık sayfalara erişemez olaur.

Bu metot geriye bir değer döndürmez.