Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 7 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Data nitelikleri, HTML öğesine JavaScript veya başka istemci tarafı kodların okuyacağı küçük ve yardımcı bilgileri eklemek için kullanılmalıdır. Ürün kimliği, işlem adı, filtre anahtarı, durum bilgisi veya bileşen ayarı gibi arayüz davranışını destekleyen veriler için uygundur. Görünecek metni, erişilebilirlik bilgisini, güvenlik sırrını veya sunucu tarafında korunması gereken veriyi data niteliğine koymayın.

Data nitelikleri ne işe yarar?​


Özel data niteliğinin adı data- ile başlamalıdır. Örneğin data-product-id="42" ifadesi, öğeyle ilişkili ürün kimliğini taşır. HTML bunu kendiliğinden yorumlamaz; JavaScript bu değeri okuyup uygun işlemi gerçekleştirir.

Değerler HTML içinde metin olarak tutulur. Bu nedenle data-enabled="false" değeri JavaScript açısından otomatik olarak Boolean false değil, "false" metnidir. Sayı veya doğru/yanlış kontrolü yapacaksanız kod içinde açık dönüşüm uygulayın.

Uygun ve uygunsuz kullanım​


Uygun bilgiÖrnekNeden kullanılır?
Kayıt kimliğidata-product-id="42"Tıklanan öğeyi kodda belirlemek için
İşlem veya filtre anahtarıdata-action="remove"Ortak olay işleyicisine bilgi vermek için
Arayüz durumudata-state="collapsed"Bileşenin mevcut durumunu okumak için
Parola veya erişim anahtarıKullanmayınHTML kullanıcıya ve istemci koduna açıktır
Görünecek başlıkNormal metin kullanınİçeriğin anlamı data niteliğine gizlenmemelidir

Data nitelikleri erişilebilirlik bilgisinin yerine geçmez. Bir düğmenin amacı kullanıcıya görünüyorsa bunu düğme metniyle, durum bilgisi yardımcı teknolojiler tarafından duyulacaksa uygun HTML veya ARIA çözümüyle ifade edin. Data niteliği, bu bilgilerin yanında kodun ihtiyaç duyduğu yardımcı anahtarı taşıyabilir.

Çalışan bir örnek​


Aşağıdaki örnekte bir düğme ürün kimliğini ve yapılacak işlemi data nitelikleriyle taşır. Aynı sınıftaki başka düğmeler de aynı işleyiciye bağlanabilir.

Kod:
<!doctype html>
<html lang="tr">
<head>
  <meta charset="utf-8">
  <title>Data niteliği örneği</title>
</head>
<body>
  <button type="button" class="product-action"
          data-product-id="42" data-action="add">
    Ürünü ekle
  </button>

  <p id="result" aria-live="polite"></p>

  <script>
    document.querySelectorAll('.product-action').forEach(function (button) {
      button.addEventListener('click', function () {
        var productId = button.dataset.productId;
        var action = button.dataset.action;

        document.querySelector('#result').textContent =
          'İşlem: ' + action + ', ürün: ' + productId;
      });
    });
  </script>
</body>
</html>

Uygulama adımları​


  1. İhtiyaç duyulan küçük yardımcı bilgiyi belirleyin; örneğin ürünün kullanıcıya gösterilmeyen teknik kimliğini seçin.
  2. HTML öğesine data- ile başlayan açıklayıcı bir ad verin ve değeri tırnak içinde yazın.
  3. JavaScript'te element.dataset üzerinden okuyun. data-product-id adı dataset.productId olarak erişilir.
  4. Dosyayı tarayıcıda açıp düğmeye basın. Başarı durumunda sonuç alanında İşlem: add, ürün: 42 görünür.
  5. Sonuç boşsa sınıf seçicisinin HTML ile eşleştiğini, niteliğin tam olarak data-product-id yazıldığını ve JavaScript'in öğeler yüklendikten sonra çalıştığını kontrol edin.

Bu örnekte data niteliği yalnızca hangi ürün üzerinde işlem yapılacağını bildirir. Gerçek ekleme işlemi için sunucuya istek gönderilecekse kimlik sunucuda yeniden doğrulanmalıdır; tarayıcıdaki data değeri kullanıcı tarafından değiştirilebilir.

Sık yapılan hatalar​


  • Görsel metni yalnızca data niteliğine koymak: Kullanıcı içeriği göremez; metni HTML içinde de bulundurun.
  • Data niteliğini anlamsal HTML yerine koymak: Örneğin açılma durumunu yalnız data-state ile belirtmek, yardımcı teknolojiye aria-expanded bilgisini sağlamaz. CSS’te [data-state="open"] gibi bir öznitelik seçicisi kullanmak ise geçerlidir; durumun erişilebilir karşılığını ayrıca koruyun.
  • Değer türünü yanlış varsaymak: Tüm değerleri metin kabul edin ve gerektiğinde Number() veya açık Boolean kontrolü kullanın.
  • Büyük veri veya hassas bilgi saklamak: HTML istemciye gönderildiği için parola, gizli API anahtarı ve sunucuda kalması gereken iş kuralları burada tutulmamalıdır.
  • Aynı bilgiyi gereksiz yere hem sınıfta hem data niteliğinde çoğaltmak: Sınıfı stil ve grup seçimi, data niteliğini öğeye bağlı işlem verisi için kullanın.

Kaynaklar​



Sık sorulan sorular​


Data niteliği CSS ile okunabilir mi?​

CSS, attr() ile bazı attribute değerlerini içerik veya stil bağlamında kullanabilir; ancak data niteliğini uygulama mantığının yerine koymak doğru değildir. Etkileşimli davranış için JavaScript kullanın.

Data niteliği veritabanı yerine geçer mi?​

Hayır. Yalnızca sayfaya gönderilmiş istemci tarafı yardımcı veridir. Kalıcı kayıt, yetkilendirme ve güvenilir iş kuralları sunucu veya veritabanı katmanında yürütülmelidir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic