21 Ekim 2016 Cuma

Javascript'de Dialoglar

Merhaba Webkolog Takipçileri!

Web sayfalarımızda kullanıcıyla doğrudan etkileşim kurmanın en hızlı yollarından biri, diyalog pencereleridir. JavaScript bize varsayılan olarak üç farklı diyalog penceresi sunar: alert(), confirm() ve prompt(). Bu pencereler, kullanıcılardan bilgi almak, onay istemek veya basit uyarılar göstermek için idealdir. Bugün, bu üç diyalog türünü yakından inceleyecek ve ne zaman, nasıl kullanabileceğinizi göreceğiz. Hazırsanız, kullanıcıyla etkileşim kurmanın temellerine dalış yapalım!


1. alert() Diyaloğu: Bilgilendirme ve Uyarılar İçin

alert(), kullanıcıya bir mesaj göstermek ve onların "Tamam" düğmesine basmasını beklemek için kullanılan en basit diyalog penceresidir. Genellikle kullanıcının dikkatini çekmek istediğinizde veya bir işlemin sonucu hakkında bilgi vermek istediğinizde tercih edilir.

Kullanım Şekli:

alert("Bu bir uyarı mesajıdır!");
alert("İşlem başarıyla tamamlandı.");
alert("Lütfen tüm alanları doldurun.");
Özellikleri:
  • Sadece bir metin mesajı görüntüler.
  • Kullanıcı "Tamam" düğmesine tıklayana kadar sayfanın diğer etkileşimlerini engeller (modal bir penceredir).
  • Dönüş değeri yoktur.
  • Tarayıcılar arasında görünümü farklılık gösterebilir ve stil özelleştirmesine izin vermez.
Ne Zaman Kullanmalı?
  • Kullanıcıya önemli bir bilgi verdiğinizde.
  • Basit bir hata mesajı gösterdiğinizde.
  • Kullanıcının bir sonraki adıma geçmeden önce bir mesajı okumasını istediğinizde.

document.getElementById('uyariButonu').addEventListener('click', () => {
    alert("Butona tıkladınız! Teşekkür ederiz.");
});

2. confirm() Diyaloğu: Onay Alma veya Vazgeçme

confirm(), kullanıcıya bir soru sorup onlardan "Tamam" veya "İptal" seçeneklerinden birini seçmelerini istediğinizde kullanılır. Bu diyalog, kullanıcının kararını bir boolean (true veya false) olarak döndürür.

Kullanım Şekli:

const kullaniciOnayi = confirm("Bu işlemi onaylıyor musunuz?");
if (kullaniciOnayi) {
    console.log("Kullanıcı işlemi onayladı.");
} else {
    console.log("Kullanıcı işlemi iptal etti.");
}
Özellikleri:
  • Bir metin mesajı ile birlikte "Tamam" ve "İptal" düğmeleri içerir.
  • "Tamam" seçilirse true, "İptal" seçilirse false döndürür.
  • alert() gibi modal bir penceredir, yani kullanıcı bir seçim yapana kadar sayfanın diğer etkileşimlerini engeller.
  • Stil özelleştirmesi yapılamaz.
Ne Zaman Kullanmalı?
  • Kullanıcının bir eylemi (örn. veri silme, kaydetmeden çıkma) onaylamasını istediğinizde.
  • Bir kullanıcı kararının ardından farklı iş akışları tetikleyeceğinizde.

document.getElementById('silButonu').addEventListener('click', () => {
    const silmeOnayi = confirm("Bu öğeyi silmek istediğinizden emin misiniz? Bu işlem geri alınamaz!");
    if (silmeOnayi) {
        console.log("Öğe silindi.");
        // Silme işlemini gerçekleştiren kod burada yer alır
    } else {
        console.log("Silme işlemi iptal edildi.");
    }
});

3. prompt() Diyaloğu: Kullanıcıdan Girdi Alma

prompt(), kullanıcıdan tek satırlık bir metin girdisi almak için kullanılır. Diyalog, bir mesaj, bir metin giriş alanı ve "Tamam" ile "İptal" düğmeleri içerir.

Kullanım Şekli:

const kullaniciAdi = prompt("Lütfen adınızı girin:", "Anonim"); // "Anonim" varsayılan değerdir
if (kullaniciAdi !== null) { // "İptal"e basılırsa null döner
    if (kullaniciAdi === "") {
        console.log("Kullanıcı adını boş bıraktı.");
    } else {
        console.log("Merhaba, " + kullaniciAdi + "!");
    }
} else {
    console.log("Kullanıcı adı girişi iptal edildi.");
}
Özellikleri:
  • Bir mesaj ve kullanıcının metin girebileceği bir alan sunar.
  • Kullanıcı "Tamam"a tıklarsa, girilen metni (string olarak) döndürür.
  • Kullanıcı "İptal"e tıklarsa veya ESC tuşuna basarsa null değerini döndürür.
  • Opsiyonel olarak bir varsayılan değer alabilir.
  • Yine modal bir penceredir ve stil özelleştirmesi yapılamaz.
Ne Zaman Kullanmalı?
  • Kullanıcıdan basit, tek satırlık bir bilgi (örn. ad, sayı, kısa not) almak istediğinizde.
  • Bir doğrulama için kullanıcıdan küçük bir girdi talep ettiğinizde.

document.getElementById('kullaniciBilgiButonu').addEventListener('click', () => {
    const yasStr = prompt("Lütfen yaşınızı girin:", "18");
    if (yasStr !== null) {
        const yas = parseInt(yasStr);
        if (!isNaN(yas) && yas > 0) {
            console.log(`Yaşınız: ${yas}`);
        } else {
            alert("Geçerli bir yaş girmediniz.");
        }
    } else {
        console.log("Yaş girişi iptal edildi.");
    }
});

Sınırlamalar ve Alternatifler

Yukarıda bahsettiğim bu üç yerleşik JavaScript diyalog penceresi, hızlı ve kolay kullanım sağlar. Ancak ciddi sınırlamaları vardır:

  • Stil Özelleştirmesi Yok: Tarayıcıların kendi varsayılan görünümlerini kullanırlar ve CSS ile stil veremezsiniz. Bu, web sitenizin tasarım bütünlüğünü bozabilir.
  • Modal Olmaları: Kullanıcı bir seçim yapana kadar sayfanın tamamını bloke ederler. Bu, özellikle karmaşık uygulamalarda kötü bir kullanıcı deneyimi yaratabilir.
  • Sınırlı İşlevsellik: Sadece basit metin mesajı, evet/hayır sorusu veya tek satırlık girdi alabilirler. Daha karmaşık formlar veya etkileşimler için uygun değillerdir.

Bu sınırlamalar nedeniyle, modern web geliştirmede genellikle bu yerleşik diyaloglar yerine özel (custom) diyalog pencereleri tercih edilir. Özel diyaloglar, HTML, CSS ve JavaScript kullanılarak sıfırdan oluşturulur veya kütüphaneler (örn. Bootstrap Modal, Material-UI Dialog, SweetAlert2) aracılığıyla sağlanır. Bu sayede diyalogların görünümü, içeriği ve davranışları üzerinde tam kontrol sahibi olursunuz ve kullanıcı deneyimini çok daha zengin hale getirebilirsiniz.


// Özel bir modal pencere örneği (HTML ve CSS'in ayrıca tanımlandığını varsayın)
// HTML: <div id="customModal" style="display:none;"><p>Bu özel bir modal.</p><button id="closeModalBtn">Kapat</button></div>

document.getElementById('openCustomModalBtn').addEventListener('click', () => {
    document.getElementById('customModal').style.display = 'block';
});

document.getElementById('closeModalBtn').addEventListener('click', () => {
    document.getElementById('customModal').style.display = 'none';
});

Sonuç

JavaScript'in alert(), confirm() ve prompt() diyalogları, basit ve hızlı etkileşimler için hala işlevsel araçlardır. Özellikle küçük prototiplerde veya hızlı testlerde işinizi görebilirler. Ancak, daha modern, estetik ve kullanıcı deneyimi odaklı web uygulamaları geliştirirken, stil verilebilir ve daha fonksiyonel özel diyalog çözümlerine yönelmek çok daha iyi bir yaklaşımdır. Bu sayede, uygulamanızın genel tasarımına uyum sağlayan ve kullanıcılara kesintisiz bir deneyim sunan diyaloglar oluşturabilirsiniz. Hangi yöntemi seçerseniz seçin, kullanıcıyla doğru zamanda, doğru bilgiyi doğru şekilde paylaşmak her zaman önceliğiniz olmalı.

Webkolog'u takipte kalın!

Hepinize bol kodlu ve keyifli etkileşimler dilerim!

0 yorum:

Yorum Gönder