Web erişilebilirliği dünyasında yeni bir dönemin kapıları aralanıyor. WAI-ARIA 1.3 spesifikasyonu, geliştiricilere tam anlamıyla bir "siren şarkısı" niteliğindeki ariaNotify() metodunu getiriyor. Bu yöntem, ekran okuyuculara programatik olarak sesli bildirim göndermeyi sağlıyor. Tek bir satır kodla, "Merhaba Dünya" gibi bir metni sesli olarak iletebiliyorsunuz. Ancak bu basitlik aldatıcı olabilir. Çünkü bu güçlü araç, yanlış kullanıldığında erişilebilirlik felaketlerine yol açabilir. Gelin, bu yeni özelliğin perde arkasına bir göz atalım.
ariaNotify() aslında uzun süredir beklenen bir çözüm. Şimdiye kadar, geliştiriciler benzer bir işlevi yerine getirmek için ARIA'nın canlı bölgelerine (live regions) başvuruyordu. Ancak canlı bölgeler, kullanımı zor ve tutarsız sonuçlar veren bir yapıydı. ariaNotify() ise doğrudan bir metin alarak, ekran okuyucunun bu metni anında seslendirmesini sağlıyor. İlk argüman olarak bir string, ikinci olarak isteğe bağlı bir yapılandırma objesi alıyor. Bu sadelik, geliştiricilerin iştahını kabartabilir, ancak bu aracı yalnızca kesinlikle gerekli olduğunda kullanmak en doğrusu.
Canlı bölgelerin sorunlarını anlamak, ariaNotify()'in değerini kavramak için kritik. Bir sayfa parçası kullanıcı etkileşimi sonucu değiştiğinde veya asenkron olarak yüklendiğinde, bu değişiklikler kullanıcı odağını o alana taşıyana kadar fark edilmezdi. Canlı bölgeler, aria-live özelliği ile bu sorunu çözmeyi amaçlar: aria-live="assertive" acil durumlar için hemen seslendirme yaparken, aria-live="polite" doğal bir fırsatta seslendirme yapar. role="alert" ve role="status" da benzer işlevler görür. Kağıt üzerinde mantıklı görünse de, pratikte işler karışıyor.
Canlı bölgelerin ince ayarını yapmak için aria-atomic, aria-relevant gibi ek özellikler bulunur. aria-atomic="true" tüm içeriğin seslendirilmesini sağlarken, false (varsayılan) sadece değişen kısmı seslendirir. aria-relevant ise metin değişiklikleri, düğüm ekleme/çıkarma gibi durumları belirler. Ne var ki, tarayıcılar ve yardımcı teknolojiler arasındaki uyumsuzluklar canlı bölgeleri çoğu zaman işe yaramaz hale getiriyor. Özellikle iç içe geçmiş işaretlemeler, DOM'a sonradan eklenen öğeler ve display:none ile gizlenen alanlar sorun yaratıyor.
Sistem Güvenliği
Canlı bölgelerin en büyük handikapı, yalnızca DOM'a eklenen veya çıkarılan işaretlemelerde çalışmasıdır. Oysa modern web'de birçok etkileşim, sayfada zaten var olan ancak görünür olmayan içeriğin görünür hale getirilmesi şeklinde olur. Örneğin, display:none ile display:block arasında geçiş yapmak canlı bölgeleri tetiklemez. Bu yüzden geliştiriciler, canlı bölgeleri genellikle görünmez bir bildirim kutusu olarak kullanır: sayfaya gizli bir aria-live öğesi yerleştirir ve ihtiyaç duydukça içeriğini güncellerler.
Nasıl Önlem Alınmalı?
İşte tam bu noktada ariaNotify() devreye giriyor. canlı bölgelerin tüm bu karmaşasına son vermeyi vaat eden bu yöntem, doğrudan bir metin alarak ekran okuyucunun dikkatini çeker. Ancak bu kolaylık, geliştiricileri bu aracı her yerde kullanmaya teşvik edebilir. Oysa erişilebilirlik uzmanları, bu yöntemin yalnızca canlı bölgelerle çözülemeyen durumlar için kullanılması gerektiğini vurguluyor. Aksi halde, ekran okuyucu kullanıcıları gereksiz bildirim yağmuruna tutulabilir.
Sonuç olarak, ariaNotify() doğru ellerde güçlü bir araç olabilir. Ancak her yeni teknolojide olduğu gibi, burada da ölçülü olmak şart. Geliştiriciler, bu özelliği kullanmadan önce mutlaka canlı bölgelerin yeterli olup olmadığını sorgulamalı. Eğer gerçekten gerekliyse, yalnızca kritik bildirimler için ve kullanıcı deneyimini zenginleştirecek şekilde kullanmalı. Unutmayın, erişilebilirlik bir lüks değil, bir gerekliliktir.
Kaynak: css-tricks.com