Canlı Bölgeler: aria-live aria-atomic aria-relevant
Eşzamansız güncellemeleri yardımcı teknolojiye duyurun
Canlı Bölgeler: aria-live aria-atomic aria-relevant, CoddyKit'te ücretsiz bir HTML Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, HTML Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. HTML Academy kursu toplamda 4 dersten oluşur.
Canlı Bölgeler Nedir
Canlı bölge, içeriği dinamik olarak güncellenen bir sayfa bölümüdür. Ekran okuyucular canlı bölgeleri izler ve kullanıcı focus'u taşımadan değişiklikleri otomatik olarak duyurur.
Canlı Bölge Oluşturma
Bir container öğesine aria-live ekleyiniz:
<!-- Polite: announce when user is idle -->
<div aria-live="polite" id="notifications"></div>
<!-- Inject text to announce: -->
<script>
document.getElementById('notifications').textContent = '5 new messages';
// Screen reader announces: '5 new messages' when user pauses
</script>aria-live Değerlerinin Özeti
aria-live için üç düzey vardır:
off— duyuru yapılmaz (canlı olmayan bölgeler için varsayılan)polite— kullanıcı konuşmaya ara verdiğinde duyurulurassertive— hemen duyurulur ve mevcut konuşmayı keser
aria-atomic Ayrıntılı İnceleme
aria-atomic, içerik değiştiğinde neyin duyurulacağını denetler:
<div aria-live="polite" aria-atomic="false"> <!-- default -->
Items in cart: <span id="count">3</span>
</div>
<!-- Only the changed span is announced: '4' -->
<div aria-live="polite" aria-atomic="true">
Items in cart: <span id="count">3</span>
</div>
<!-- The entire div is announced: 'Items in cart: 4' -->
<!-- aria-atomic="true" gives more context but is more verbose -->aria-relevant Değerleri
aria-relevant, hangi DOM değişikliklerinin duyuruları tetikleyeceğini belirtir:
<!-- Default: additions text -->
<div aria-live="polite" aria-relevant="additions text">
<!-- Announce removals too: -->
<div aria-live="polite" aria-relevant="removals">
<!-- Announce everything: -->
<div aria-live="polite" aria-relevant="all">
<!-- Values: additions, removals, text, all
'additions' = added nodes announced
'removals' = removed nodes announced
'text' = text content changes announced -->Önceden Tanımlanmış Canlı Bölge Rolleri
Bazı roller aria-live değerini örtük olarak ayarlar:
role="alert"— aria-live="assertive" + aria-atomic="true"role="status"— aria-live="polite" + aria-atomic="true"role="log"— aria-live="polite"role="timer"— aria-live="off"role="marquee"— aria-live="off"
Canlı Bölgeyle Yükleme Durumu
Yükleme ve tamamlanma durumlarını duyurunuz:
<div role="status" aria-live="polite" aria-atomic="true" id="load-status">
<!-- empty initially -->
</div>
<script>
async function loadData() {
document.getElementById('load-status').textContent = 'Loading...';
const data = await fetchData();
renderResults(data);
document.getElementById('load-status').textContent =
`${data.length} results loaded.`;
}
</script>Form Gönderme Geri Bildirimi
Form gönderme status'u için canlı bölge:
<form id="contact-form" novalidate>
<input type="email" name="email">
<button type="submit">Subscribe</button>
</form>
<div role="status" aria-live="polite" id="form-status"></div>
<script>
form.addEventListener('submit', async (e) => {
e.preventDefault();
const status = document.getElementById('form-status');
status.textContent = 'Submitting...';
await submitForm(new FormData(form));
status.textContent = 'Thank you! You are now subscribed.';
});
</script>Arama results Sayısı
Arama results bilgisini dinamik olarak duyurunuz:
<label for="search">Search</label>
<input type="search" id="search">
<div role="status" aria-live="polite" aria-atomic="true" id="results-count"></div>
<div id="results"></div>
<script>
let debounceTimer;
search.addEventListener('input', () => {
clearTimeout(debounceTimer);
debounceTimer = setTimeout(() => {
const results = filterResults(search.value);
renderResults(results);
document.getElementById('results-count').textContent =
`${results.length} results for "${search.value}"`;
}, 300);
});
</script>Canlı Bölge Karşı Kalıpları
Şu canlı bölge hatalarından kaçınınız:
- Canlı bölgeleri oluşturup yok etmeyiniz; boş başlangıç içeriğiyle kalıcı hâle getiriniz
- Canlı bölgeleri aria-hidden alanlarının içine yerleştirmeyiniz
- Rutin güncellemeler için assertive kullanmayınız; bu değer çok rahatsız edicidir
- Güncellemeleri çok sık duyurmayınız (arama results sayılarını hız sınırlamasından geçiriniz)
Canlı Bölgeleri Sınama
Canlı bölge duyuruları nasıl sınanır:
- VoiceOver'ı (Mac: Cmd+F5) veya NVDA'yı (Windows: Ctrl+Alt+N) açınız
- Güncellemeyi tetikleyiniz ve duyuruyu dinleyiniz
- Zamanlamayı doğrulayınız: polite bekler, assertive konuşmayı keser
- axe DevTools'un canlı bölge sorunlarını işaretlemediğini kontrol ediniz
Kısa Kontrol
Hangi rol, aria-live assertive ve aria-atomic true değerlerini örtük olarak ayarlar?
Özet: Canlı Bölgeler
Canlı bölgeler için temel bilgiler:
aria-live="polite"— kullanıcının duraklamasını bekleraria-live="assertive"— konuşmayı hemen keseraria-atomic="true"— bölgenin tamamını duyururrole="alert"= assertive + atomic; role="status" = polite + atomic- Canlı bölgeleri kalıcı tutunuz; içeriği temizleyip ardından ayarlayınız
Sıkça Sorulan Sorular
“Canlı Bölgeler: aria-live aria-atomic aria-relevant” dersi ücretsiz mi?
Evet — “Canlı Bölgeler: aria-live aria-atomic aria-relevant” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve HTML Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. HTML Academy kursu toplamda 4 dersten oluşur.
“Canlı Bölgeler: aria-live aria-atomic aria-relevant” dersinde ne öğreneceğim?
Eşzamansız güncellemeleri yardımcı teknolojiye duyurun HTML Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
HTML Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te HTML Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Canlı Bölgeler: aria-live aria-atomic aria-relevant” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu HTML Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her HTML Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Geçişler için aria-expanded ve aria-controls
- aria-selected ve Sekme Kalıpları
- Canlı Bölgeler: aria-live aria-atomic aria-relevant
- Ekran Okuyucularla Test Etme