pillinetwork hesabınızla giriş yapın.

HTML Kullanmadan JavaScript Include

Web sayfaları geliştiren tüm heskesin bildiği gibi, projelerimizde inline (yani sayfa içinde) çeşitli scriptler yazabileceğimiz gibi, scriptleri (yani çalışan program parçacıklarını) bir başka dosya (veya dosyalar) içinde tutup ön sayfalara referans kodlarıyla dahil ederek, html kodlarımızda sadeliği (ve iş bölümünde kolaylığı) arttırmış oluyoruz.

Aşağıda yapacağımız çalışma için bize jQuery isimli javascript kütüphanesi gerekmektedir. Çünkü bu kütüphane AJAX işlemlerini kolay bir şekilde halledebiliyor. Gelin şimdi bu kütüphaneyi standart yollardan sayfamıza dahil edilecek örneği verelim. Böylece hem istemci taraflı tasarıma yeni başlamış arkadaşlarımıza include (dahil etme) için örnek oluşturalım hem de normal yollardan bir scriptin ne şekilde sayfaya dahil edildiğine yeniden bakmış olalım. Bu şekilde aşağılarda anlatacağımız gibi standardın dışına çıkarak web sayfalarımıza başka yollardan script dosyalarını dinamik bir şekilde yüklediğimizde meydana getirdiğimiz farklılığı gözler önüne sermiş olacağız.

Mesela artık bir düğmeye tıkladıktan sonra, istediğimiz bir script dosyasını sunucudan yükletebileceğiz! Ama normal yollardan include işlemi aşağıdaki gibi yapılır ve sayfamız yüklendiği anda referans edilen script gerekli yerden talep edilip o da yüklenir. Yani bir düğmeye tıklayayım da sonra scriptler gelsin (ya da benim özel bir scriptim var onu ben istediğim gibi yükleyebileyim) şansınız html'de yok!

1
<script src="jQuery.js"></script>

Yukarıda gördüğünüz bir HTML kodudur ve web sayfasına bir başka script dosyasını dahil eder. Bu şekilde, dahil ettiğimiz script dosyasında barınan fonksiyonları ve çeşiştli işlemleri kullanabiliriz.

Şimdi de dinamik yüklenen bir script örneği verelim.

1
2
3
4
5
6
7
<script>
$.ajax({
type: "GET",
url: "test.js",
dataType: "script"
});
</script>

Bu kodun çalışabilmesi için jQuery'nin son sürümünü web sitesinden indirmiş olmanız ve ilk verdiğimiz kod ile sayfanıza dahil etmiş olmanız gerekiyor.

Verdiğimiz örnekte yaptığımız şuydu;
  • jQuery'nin ajax sınıfına eriÅŸtik ve GET metoduyla bir dosya isteÄŸinde bulunduk
  • url kısmına yüklemek istediÄŸimiz javascript dosyasının adresini yazdık
  • dataType kısmında ise jQuery'e dedik ki; "biz bir dosya istedik ama bak bu istediÄŸimiz dosya bir javascript dosyasıdır. İçeriÄŸinde çalışabilir programcıklar bulunmaktadır. Bu yüzden bu dosyamıza özel ihtimam göster. Gerekeni yap!"

Hepsi bu kadar. Peki bu "gerekeni yap" ne demek oluyor? javascriptte güzel bir fonksiyon bulunuyor. Bu fonksiyon tarayıcı (browser) içine gömülmüş, hazır olarak gelmektedir. ismi "eval". Bir örnek verelim ve çalışma mantığını anlayalım.

1
2
3
4
<script>
var yazi = "alert('deneme 1 2 3')";
eval(yazi);
</script>

yazi isimli bir değişken tanımladık ve içeriğine tırnak kullanarak yine javascripte ait bir başka program kodu yazdık. Ama tırnak kullandığımız için javascript alert("deneme 1 2 3") ifadesini çalıştırmaz. Ona bir string (metin) muamelesi yapacaktır.

Hemen altında ise yazi değişkenini eval fonksiyonundan geçirdiğimiz anda artık alert("deneme 1 2 3") ifadesi bir program koduna döüştürüldü ve çalıştırıldı (execute işlemi).

jQuery'nin de yaptığı eval fonksiyonun cilalayıp kullanmaktı aslında. Önce AJAX ile script sunucudan alındı, sonra alınan metinsel ifadeler (string) eval'den geçirildi.

Mesela bir script dosyasının yüklenmesini ziyaretçinin bir düğmeye basmasına bağlamanız artık mümkün. Diyelim ki web sayfanızda id parametresi "secim" olan bir düğme bulunsun;

1
2
3
4
5
6
7
8
9
<script>
$("#secim").click(function(){
$.ajax({
type: "GET",
url: "test.js",
dataType: "script"
});
});
</script>

Az önceki script yükleme metodumuzu bir düğmenin "click" yani tıklanma olayına bağladık. Düğmeye tıkladığınızda "test.js" isimli javascript dosyasında her ne işlem veya fonksiyon varsa sayfanıza dahil olurlar. (fonksiyonlar tetiklenmiş olmaz, buna dikkat edin. Sadece sayfanıza dahil edilmişlerdir. Tetikleme işi yine size kalır.)

Umuyorum ki faydalı bilgiler vermiş olduk. Güzel projelerde kullanmanız dileğiyle...

--------------------------------
Diğer benzer makalelerim.. ( Bilgi birikiminizi arttırmak için okumanız gerekebilir!)
--------------------------------
  1. jQuery ile Kolay AJAX Uygulamaları Üretin
  2. jQuery ile Çeşitli Efektleri Kullanın
  3. Nesne Yönelimli Javascript Uygulamaları
  4. JSON TekniÄŸi ve Javascript ile iliÅŸkisi..
  5. javascript ile Sinema Tarzında Efekt Yapalım
  6. JavaScript ile Animasyon Üretme Tekniği
Spacer
Spacer
/* lazaronnie yazdı. 27 Mart 2009 12:40. 3 yorum var */

Yorumlar

Bir önceki ajax yazımda az örnek olduğunu düşündüm ve bu yazıyı hazırladım. birbiriyle bağlantılı konulardır. umarım faydalı olur.

Güzel bir yazı teşekkürler.

Şöyle de bir sorun varaslında, web sayfalarında javascriptleri kapatma durumları oluyor. Firefoxta tek tıklama ile ie ile de ayarlardan yapılabiliyor.

Benim aklımda şu var, html şekline yüklenen js leri kapatmak kolay galiba. Biz jquery ide yada js dosyalarını başka bir şekdilde include edemezmiyiz dosyamıza.

Sizinv erdiğiniz örnekde de jquery i önceden yüklemeniz lazım. Bunun önüne nasıl geçebiliriz?

/* http://matasoy.blogcu.com Sigara kullanmam ama Çok Pis QuakeIII Arena Oynarım */

benim bildiğim bir çözümü yok.

eğer bir kullanıcı js'i kapatmışsa hiçbir şekilde çalıştıramıyoruz yani ister html ile yüklensin ister ajaxla js içinden çağırılsın ve evet ziyaretçi kolayca kapatabilir js'i. eğer kapatılmışsa, bir iki fonksiyonu vardı galiba onlar dışındakiler çalışmıyor. bahsettiğim fonksiyonlar da js'nin on-off durumunu bildiriyordu galiba.. yani js kapatıldığında browser'ın js yorumlayıcısı devre dışı kalıyor.

jQuery optimizasyon yapmak istediğimizde biraz fazla büyük gelebilir haklısınız. bu durumda tavsiyem şu olacaktır. Kendi ajax nesnenizi oluşturun ve sayfanıza dahil edin. Ardından bu nesne yardımıyla js dosyanızı sunucudan isteyip içeriğini bir değişkene yükleyin, bu değişkeni de eval'den geçirdiğinizde yine aynı şeyi yapmış olursunuz. kütüphanenin tümünü yükletmek yerine ihtiyacımız olan kısmını kullanmış oluruz bir bakıma. en hafif yolu bu.

(kendi site analizlerime baktığımda 250 ziyaretçiden 12 sinin javascripti kapalı geliyor.)

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

son yorumlar

arama

pillinetwork