Sonuç sayısı, onay ve hata gibi durum mesajlarının, odak taşınmadan yardımcı teknoloji tarafından duyurulmasını ister.
Bir sayfa "3 sonuç bulundu", "Sepete eklendi" ya da "Yükleme %60 tamamlandı" diyor. Gören kullanıcılar bunu görür. Ekran okuyucu kullanıcısı, odak taşınmadığı için hiçbir şey duymaz ve eylemin işe yarayıp yaramadığını bilemez.
Bu kriter, işaretleme dilleriyle uygulanan içerikte durum mesajlarının, odak almadan yardımcı teknolojiler tarafından kullanıcıya sunulabilmesi için rol ya da özellikler aracılığıyla programatik olarak belirlenebilmesini ister.
role="status" gibi bir rol ya da özellik aracılığıyla açığa çıkarılır; böylece yardımcı teknoloji odağı almadan duyurabilir.role="status" kullanın (ARIA22) ve başarı geri bildirimiyle birlikte (G199).role="alert" ya da bir canlı bölge kullanın (ARIA19); hatanın metin açıklaması ve önerilerle birlikte.role="log" kullanın (ARIA23).role="alert" ya da aria-live="assertive" kullanmak hatadır.Yeni önemli metni yerlerini kaybetmeden duyması gereken ekran okuyucu kullanıcıları. Çevresel metni görmeyen, ekran okuyucu kullanan az görenler. İşaretlenmiş mesajlar sayesinde yardımcı teknolojinin onları geciktirmesi, bastırması ya da vurgulaması mümkün olan bilişsel engelli kişiler. Mesajı fark eden gören kullanıcılar da aynı bilgiyi başka bir biçimde alır.
Avrupa Erişilebilirlik Yasası (Direktif (AB) 2019/882) 28 Haziran 2025'ten sonra piyasaya sunulan kapsamdaki ürün ve hizmetler için geçerlidir. Yasanın 47. gerekçesi web siteleri ve mobil uygulamalar için dört ilkeyi sayar: algılanabilirlik, işletilebilirlik, anlaşılabilirlik ve sağlamlık. Yardımcı teknolojinin sunabildiği durum mesajları, "sağlamlık" ilkesinin parçasıdır.
Teknik karşılığı EN 301 549 standardında bulunur. Standart, WCAG 4.1.3'i atıfla alır ve ortama göre ayrı maddelere dönüştürür.
| Madde | Ortam | Ne ister? |
|---|---|---|
| 9.4.1.3 | Web sayfaları | Web içeriğinin WCAG 4.1.3 kriterini karşılamasını ister. |
Kriter metni, işaretleme dilleriyle uygulanan içeriğe uygulanır. EN 301 549 V4.1.1'in dokümanları ve yazılımı nasıl ele aldığını kontrol edin. Kriterin web dışı dokümanlara uygulanıp uygulanmadığı ve nasıl uygulandığı standardın 10. maddesinde belirtilir. Madde numaraları EN 301 549'un "9. + WCAG numarası" düzenine göredir. V3.2.1'de yazılım maddesi, açık ve kapalı işlevsellik için ayrı alt maddelere bölünmüştür. Kaynak gösterirken tam numaraları standarttan kontrol edin.
Standart sürümü: EN 301 549 V4.1.1 (Eylül 2026), WCAG 2.2'yi esas alan ve EAA için hazırlanan ilk sürümdür. Henüz AB Resmî Gazetesi'nde atıf almamıştır; bu nedenle EAA gereksinimlerini karşılamanın gönüllü teknik yolu olarak görülmelidir. Atıf yapıldığında EAA ile ilgili uygunluk karinesi sağlayacaktır. 4.1.3 kriterinin metni WCAG 2.1 ve 2.2'de aynıdır. AA düzeyinde bir kriterdir.
EAA bağlamında dikkat: Yasanın Madde 2/4 hükmü bazı içerikleri gereksinimlerin dışında bırakır; örneğin 28 Haziran 2025'ten önce yayımlanmış ofis dosya biçimleri ve bu tarihten sonra güncellenmeyen arşivler. Bu tarihten sonra yayımladığınız ya da değiştirdiğiniz içerik bu istisnaların kapsamında değildir.
Directive (EU) 2019/882, EUR-Lex, İngilizce, yeni sekmede açılır
Sayfada zaten bulunan bir kapsayıcıya role="status" ekleyin ve metnini güncelleyin.
<div id="count">12 sonuç</div> <!-- metin sessizce değişiyor --><div id="count" role="status" aria-atomic="true">12 sonuç</div>
<script>
count.textContent = results.length + " sonuç";
</script>Bir eylemden sonraki onay, odak taşınmadan duyurulmalıdır.
toast.textContent = "Sepete eklendi"; // açığa çıkarılmıyor<div role="status" id="toast"></div>
<script>
addBtn.addEventListener("click", () => {
toast.textContent = "Sepete eklendi";
});
</script>Önemli, zamana duyarlı bir hata için role="alert" kullanın.
<div class="error">Kart reddedildi</div><div role="alert">Kartınız reddedildi. Numarayı kontrol edin ya da başka bir kart deneyin.</div>Yükleme ilerlemesini her yüzdede değil, kibar bir canlı bölgeyle duyurun.
<progress value="60" max="100"></progress> <!-- hiçbir şey duyurulmuyor --><progress value="60" max="100" aria-label="Yükleme"></progress>
<div role="status" id="up">Yükleme %60 tamamlandı</div>Zaman içinde eklenen ardışık girdiler için role="log" kullanın.
<div id="chat">…</div> <!-- yeni mesajlar sessiz --><div id="chat" role="log" aria-label="Sohbet mesajları">…</div>role="alert" baskındır ve kullanıcıyı böler. Yalnızca önemli, zamana duyarlı içerik için kullanın.
<div role="alert">Kaydedildi</div> <!-- zamana duyarlı değil --><div role="status">Kaydedildi</div>Bu kriter işaretleme dilleri için yazılmıştır, ama fikir uygulamalar için de geçerlidir. iOS ve Android'de bir duyuru gönderin ya da bir bölgeyi canlı olarak işaretleyin; ekran okuyucular güncellemeyi seslendirsin.
import SwiftUI
struct CartButton: View {
@State private var count = 0
var body: some View {
Button("Sepete ekle") {
count += 1
// VoiceOver tarafından odak taşınmadan duyurulur
AccessibilityNotification.Announcement("Sepete eklendi. \(count) ürün").post()
}
}
}import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.LiveRegionMode
import androidx.compose.ui.semantics.liveRegion
import androidx.compose.ui.semantics.semantics
@Composable
fun ResultCount(count: Int) {
// TalkBack, canlı bölgedeki değişiklikleri odağı taşımadan duyurur
Text(
text = "$count sonuç",
modifier = Modifier.semantics { liveRegion = LiveRegionMode.Polite }
)
}status, alert ya da log gibi uygun role sahip bir öğede ya da bir canlı bölgede mi duruyor?alert yalnızca önemli ve zamana duyarlı mesajlar için mi kullanılıyor?role="alert": Sürekli kesintiler.Corpowid, dijital erişilebilirlik alanındaki yenilikçi yaklaşımı ve performansı nedeniyle dünyanın önde gelen araştırma ve danışmanlık şirketlerinden biri olan Gartner tarafından takdir edilmiştir. Bu rozetler, yapay zeka destekli ve kapsayıcı web deneyimleri oluşturma konusundaki kararlılığımızı yansıtmaktadır.