JavaScript'e Giriş
Bölüm 6


Fareyle bir kere tıklayıp iki sayfanın birden nasıl yüklenebileceği hakkında birçok mektup aldım. Bu soruya üç ana cevap verilebilir. Birincisi bir düğme yaratırsınız, bu düğmeye basıldığında iki frame'e sayfaları yükleyecek bir fonksiyon çağırılır. Aslında hiç de zor birşey değil. Eğer buraya kadar olan tüm dökümanlarımızı sırayla okuduysanız bize gereken herşeyi zaten öğrenmişsiniz demektir.

Üç tane frame yarattık. İlk frame'de düğme yaratıldı. İlk gelen HTML sayfası ise frame'leri yaratmak için ve onlara isim vermek için kullanıldı. Buraya kadar JavaScript'le bir ilgimiz yok. Yine de bir bakalım:

frames2.html

<HTML>
<HEAD>
<title>Frame'ler</title>
</HEAD>

<FRAMESET COLS="295,*"> 
    <FRAME SRC="loadtwo.html" NAME="fr1"> 
  <FRAMESET ROWS="75%,25%"> 
    <FRAME SRC="cell.html" NAME="fr2"> 
    <FRAME SRC="cell.html" NAME="fr3"> 
  </FRAMESET> 
</FRAMESET> 
</HTML>

loadtwo.html ilk frame'e yüklendi. Bu frame'de JavaScript fonksiyonu ve düğme var.

loadtwo.html

<HTML>
<HEAD>
<script language="JavaScript">
<!-- Sakla
  function loadtwo(page2, page3) {
     parent.fr2.location.href=page2;
     parent.fr3.location.href=page3;
}
// -->
</script>
</HEAD>
<BODY>
<FORM NAME="buttons">
     <INPUT TYPE="button" VALUE="1satırda iki sayfa" onClick="loadtwo('frtest1.htm','frtest2.htm')">
</FORM>
</BODY>
</HTML>

Düğmeye basıldığı anda loadtwo() fonksiyonu çağırıldı ve iki değer fonksiyona gönderildi. Fonksiyonu incelerseniz 'fr1' ve 'fr2' adlı frame'lere gönderdiğimiz iki değerin yüklendiğini göreceksiniz. Eğer farklı adresleri içeren birden fazla düğme kullanacaksanız bu fonksiyonu yeniden çağırabilirsiniz. Tek yapmanız gereken yeni düğmenizde yani adresleri fonksiyona göndermek...


İkinci teknik ise buton yerine link kullanmaktır.

<a href="yourlink.html" onCLick="fonksiyon()">

Bu teknik her platformda sağlıklı olarak çalışmıyor. Bu yüzden kullanmamanız daha iyi olur ancak telaşa gerek yok, çünkü link'lerde JavaScript fonksiyonu çağırmanın daha kesin bir yolu var:

<a href="javascript:fonksiyon()">Adres</a>

Bunun gerçekten de hiçbir zorluğu yok ve tüm JavaScript destekleyen alıcılarda gayet güzel çalışıyor. Eğer yukarıdaki örnekte verdiğimiz 'loadtwo()' fonksiyonunu bu şekilde kullanırsanız düğme yaratmadan da bir tıklamada iki sayfa açabilirsiniz.


Üçüncü bir teknik de şöyle oluyor:

<a href="getfr2.htm" target"fr2">Buraya Tıklayın!</a>

Bu zaten bildiğimiz basit bir HTML komutu. Ancak iş yüklenen getfr2.htm sayfasında bitiyor:

getfr2.htm

<HTML>
<BODY onLoad="parent.fr3.location.href='getfr3.htm'; return true;">
Hebele Hubele
</body>
</html>

Tabii bunun için ikinci frame'e yüklediğiniz her sayfanın başına bunun gibi bir satır eklemeniz gerekiyor. Burada <BODY ...> komutuna koyduğunuz bir onLoad özelliği ile ikinci frame'e yüklediğiniz sayfa yükleme bittikten sonra üçüncü frame'e diğer dökümanı yüklüyor.


Diğer bir yaygın problem ise bir link'in yeni bir pencerede nasıl açılacağı. Bunun için yakından tanıdığınız bir komut kullanılır: TARGET

<a href="herhangibiradres.html" target="yeni">Git!</a>

Burada açılmasını istediğimiz adresi "yeni" adını verdiğimiz daha önce tanımlanmamış bir pencereye gönderiyoruz. Böyle bir pencere olmadığı zaman Internet Explorer ya da Netscape otomatik olarak yeni bir pencere açar. Aynı işlem JavaScript ile de yapılabilir. JavaScript kullanıldığı takdirde yeni açılan pencerenin üstündeki menü, altındaki statusbar gibi özelliklerinin var olup olmaması, yeni açılan pencerenin boyutları kontrol edilebilir.


İşte nasıl yapacağınız:

<HTML>
<HEAD>
<SCRIPT Language="JavaScript">
<!--
   function WinOpen2(url) { 
      msg=open(url,"dene","toolbar=no,directories=no,menubar=no,
                           status=no,width=400,height=200,resizable=no,scrollbars=no");
      } 
// -->
</SCRIPT>


<BODY>
<FORM>
  <INPUT TYPE="button" NAME="Button22" VALUE="Bir de beni dene!" onClick="WinOpen2('cell.html')">
</FORM>


Şimdi sizinle JavaScript'te kullanılan değişik operatörlere bakalım. Operatörler script'inizi güçlendiren ve kısaltan iyi bir tekniktir. Örneğin x değişkeninin 3'ten büyük, 10'dan küçük olduğunu anlamak istiyorsanız şu şekilde yazmak aklınıza gelebilir:


if (x > 3) 
  if (x < 10)
    herhangibirfonk();

'herhangibirfonk()' fonksiyonu eğer x > 3 ve x < 10 ise çağırılacaktır. Bunu yazmanın daha iyi bir yolu var:


if (x>3 && x<10) herhangibirfonk();
&& AND (ve) operatörü olarak adlandırılır. Öyleyse bir de OR (ya da) operatörü olmalıdır. Eğer bir değişkenin 5'e eşit ya da başka bir değişkenin 17'ye eşit olduğunu öğrenmek istiyorsanız:


if (x==5 || y==17) herhangibirfonk();
yazabilirsiniz. 'herhangibirfonk()' fonksiyonu eğer x 5'e eşit olursa ya da y 17'ye eşit olursa çağırılacaktır. Eşitlikler JavaScript'te '==' ile belirtilir (Tabii <,>,<= and >= işaretleri de var). Eğer C/C++ biliyorsanız bu işaretleri anlamakta zorlanmayacaksınız. '=' işareti değişkene değer atamak için, '==' ise eşitlik belirtmek için kullanılır.

Eğer değişkenin eşitsizliğini inceleyecekseniz '!=' işareti işinizi görecektir: x != 17.

Bunlar en çok kullanılan operatörlerdir. Eğer Netscape'in dökümanlarına bakarsanız birçok operatörü daha tanıma imkanınız olabilir.

İndeks - Bölüm 1 - Bölüm 2 - Bölüm 3 - Bölüm 4 - Bölüm 5 - Bölüm 7


11.Mayıs'96
© 1996 Stefan Koch