Javascript ile Accessible Rich Internet Uygulamaları (aria) oluşturmak
Accessible Rich Internet Uygulamalarına Giriş
Accessible Rich Internet Applications (ARIA), World Wide Web Consortium (W3C) tarafından yayınlanan teknik bir özelliktir, ekran okuyucuları, braille ekranları ve ses kontrol yazılımı gibi dinamik JavaScript tabanlı arayüzler arasındaki boşlukları köprüler ve yardımcı olmayan teknolojiler arasında köprüler oluşturabilir, ancak ARIA özellikleri, kağıtları, ağaç görüşleri ve ARIA'nın doğru bir şekilde birleştirilemeyeceğinin riskini de tanıtıyor.
ARIA'nın temel değeri, kullanıcının iş akışını bozmadan bir düğmeye bakma yeteneğinde yatıyor. ARIA özellikleri için yerel olarak rollerini veya durumunu aktaramaz. Örneğin, aİLFLT:0) bir düğmeye bakmak için kullanılan bir düğmeye bakmak, kullanıcının iş akışını bozmadan dinamik içerik değişiklikleri bildirmek için izin verir. ARIA özellikleri.
Bu makale, ARIA'nın pratik uygulama yoluyla JavaScript, roller, devletler, özellikler, dinamik özellikler yönetimi, odak ve klavye işleme ve ortak desenler ile devam ediyor.Her adımda, ARIA'nın hem gerçek dünya kullanıcı ihtiyaçlarına saygı duyan üretim kodlaması kodlarını yazmaya devam ediyor.
ARIA Rolleri, Devletler ve Özellikler
Roller: Widget Type'ı Tanımlayın
Bir ARIA rolü, bir elementin ne yapması gerektiği konusunda yardımcı teknoloji anlatıyor. Örneğin,END:5) Bir sekme ile ilişkili bir içerik paneli olduğunu gösterir. Roller birkaç kategoriye girer: widget rolleri (örneğin,00T: 16,00T:)), [[Dönetici bir elementin yerine, ana öğenin değerlendirilmesi yerine, doğru bir şekilde kullanılması durumunda, örneğin, doğru bir şekilde kullanılması durumunda.
Devletler ve Özellikler: Dinamik Attributes
ARIA devletler, kullanıcı etkileşimi veya uygulama mantığına yanıt veren özelliklerdir. Common states şunları içerir:
- [FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=
- [FONT=18] – latch'ın /off'taki düğmeleri yakalamak için.
- [[Dört:|- sekme listelerinde, liste kutuları veya hangi seçeneğin seçildiğini göstermek için ızgaralar kullanılır.
- [FONT: 16) - bir elementin şu anda operası olmadığını aktarmaktadır.
Özellikler, diğer yandan, daha istikrarlı ve ilişkileri veya etiketleri tanımlama eğilimindedir. Örnekler, [[Üyetimler, bir elementin kimliklerine, widget kontrollerine göre, [[bindler bir etikete işaret eder) ve [[Üye Olmayanlar, bir bölgenin dinamik olarak güncelleyeceği ve yardımcı teknoloji tarafından izlenmelidir.
JavaScript, bu özellikleri altta bulunan DOM durumu ile senkronize etmekten sorumludur.Bir kullanıcı eylemi veya bir zamanlayıcı olay UI'yi değiştirirse, ilgili ARIA nitelikleri hemen güncellenmelidir. Ekran okuyucularının geçmiş bilgileri duyurabileceği kırık erişilebilirlik deneyiminde bu sonuçları yapmamanız.
ARIA'yı JavaScript ile uygulama: Core Desenler
Dinamik Attribute Yönetimi
En basit ARIA görevi, boolean özelliklerini tamamlamaktır. Aşağıdaki model genişleyen menüler, açıklama widgets ve uygun paneller için yaygındır:
const trigger = document.getElementById('expand-trigger');
const target = document.getElementById('expandable-content');
trigger.addEventListener('click', () => {
const isExpanded = trigger.getAttribute('aria-expanded') === 'true';
trigger.setAttribute('aria-expanded', !isExpanded);
target.hidden = isExpanded;
});
HTML özelliğinin de göz ardı edildiğine dikkat edin. Bu, içeriğin çöktüğü erişilebilir ağaçtan gerçekten kaldırıldığı, sadece görsel olarak gizli değil. CSS'ye yalnızca içerik gizlemek için odaklanılabilir veya okunabilir ekran okuyucuları tarafından.
Bir sekme paneli gibi daha karmaşık öğeler için, birden çok özellik birlikte yönetilmelidir. Yeni bir sekme seçildiğinde, daha önce seçilmiş sekmenin kullanım süresini kaybeder. ” ve ilişkili paneli gizlenmişken, yeni seçilen sekme kazançları göz önüne alındığında JavaScript de güncellenmelidir.
[FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=TRNT=FONT=FONT=FONT=FONT=TRNT=FONT=FONT=TRNT=FONT=FONT=TRNT=TRNT=TRNT=TRNT=TRNT=
Kullanıcının odak noktası dışındaki içerik değişiklikleri (örneğin, bir haber bülteni veya geçerli bir hata ortaya çıktığında), ekran okuyucuları, bölgeyi hemen işaretlenmediğinde değişikliği duyuramaz. ”TheİLFLT:31 has three values:.FLT:32 (default), boş zaman uyarıları (tafault), ve [[günde)
const liveRegion = document.getElementById('status-messages');
liveRegion.setAttribute('aria-live', 'polite');
function addMessage(text) {
const p = document.createElement('p');
p.textContent = text;
liveRegion.appendChild(p);
}
Önemli: İçerik canlı bölgede uygulanabilir veya kaldırılmalıdır. İç HTML tamamen bazı ekran okuyucuları tarafından kaçırılabilmesi için değişiklike neden olabilir. ”T:38 veya [[Döneticiler arasında güvenilir çalışır.
JavaScript ile Focus Yönetimi
Klavye kullanıcıları, gezinmek için görünür bir odak yüzüğüne güveniyor. Bir modal diyalog açılırken, yakınlara kadar orada kapanmalıdır.Bir menü kapandığında, onu tetikleyen elemente geri dönmeli. JavaScript bu geçişleri uygun elemente ve ayarlayarak ele almalıdır.
Bir modal diyalog için örnek:
function openDialog(dialogElement) {
dialogElement.removeAttribute('hidden');
dialogElement.setAttribute('aria-modal', 'true');
dialogElement.setAttribute('role', 'dialog');
// Focus the first focusable element inside the dialog
const firstFocusable = dialogElement.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
if (firstFocusable) {
firstFocusable.focus();
}
// Store the previously focused element
this.lastFocused = document.activeElement;
}
Focus tuzakları, Tab veya Shift+Tab döngülerinin sadece diyalog içindeki elementlerle kullanılmasını sağlar. Bu, diyalogdaki anahtarlama olayları dinlemek ve uygun olarak ilk veya son odaklanabilir çocuğa odaklanmayı sağlayabilir.
Klavye Navigation ve ARIA: The Inseparable Pair
ARIA rolleri ve özellikleri sadece semantics iletir; otomatik olarak klavye etkileşimi sağlamazlar. JavaScript, her bir widget modeline geçmenin beklenen klavye davranışını uygulamalıdır. W3C'surFLT:0)ARIA Authoring Practices Guide (APG)), bireysel sekmeler arasında gezinirken ayrıntılı bir klavye kongreleri sunar. Örneğin, bir sekme listesi listeyi ve sekme listesine ve sekme listesinin üzerinden hareket etmesini bekler.
klavye desteği uygulamak en yaygın erişilebilir başarısızlıklardan biridir. Örneğin, fare tıklamalarına cevap veren bir arabalı, her iki fare tıklamasında ve yalnızca dokunma ile çalışan bir sürüklenme listesi veya sadece arka tarafta görünen bir alettipi, ancak bir düğme olarak bir USBT:50'yi tamamen kullanmalısınız. Örneğin, fare ve klavyeleri dinlemek zorundasınız. ”
Her zaman bir fare olmadan klavye navigasyonunu test edin: Tüm etkileşimli elementlerin Tab aracılığıyla erişilebilir olmasını sağlamak, bu mantıksal odak sipariş görsel düzeni maçlarına ve bu odaklanma tuzağı widget'ı terk etmesini engellemez.
Common ARIA Desenleri JavaScript Örnekleri ile
1. Accessible Anlaşmaion
Bir anlaşma birden fazla açıklama öğesinden oluşur, her biri bir düğmeye ve bir parça parçalı panele bir giriş içerir. ARIA özellikleri: 03.03.2012|04.2012||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const accordionButtons = document.querySelectorAll('.accordion-button');
accordionButtons.forEach(btn => {
btn.addEventListener('click', () => {
const panel = document.getElementById(btn.getAttribute('aria-controls'));
const expanded = btn.getAttribute('aria-expanded') === 'true';
btn.setAttribute('aria-expanded', !expanded);
panel.hidden = expanded;
});
});
2. Autocomplete Combobox
Comboboxes bir metin girişi gerektirir ([[Dönemli: [8]) bir liste kutusu popup ([DÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜ) ve JavaScript, [[DÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ
3. Modal Dialog
Bir modal dialog kullanır:61. ve [[Dönetici:62|Açık olduğunda sayfanın geri kalanı içeride kapanmalıdır ve içinde kapanmış olmalıdır.
Test ARIA Uygulamalarını Test Etmek
Gerçek yardımcı teknoloji ile test edilemez, ancak otomatik araçlar birçok sorunu erken yakalayabilir. Browser geliştirici araçları şimdi hesaplanmış erişilebilirlik ağacı gösteren erişilebilirlik panelleri içerir.TheETHFLT:0 BYe DevTools) ile ilgili olarak, eksik ARIA özellikleri, yanlış rol ve odaklanma yönetimi hataları. Ek olarak, ekran okuyucuları NVDA, JAWS ve VoiceOver teklif test modları test eder.
Başka bir temel uygulama sadece klavye ile test edilir: Tüm etkileşimli kontroller aracılığıyla sekme anahtarları kullanın, sekme listeleri ve comboboxes'te ok anahtarları kullanın ve hiçbir elementin ulaşılamaz hale gelmemesini sağlayın. ARIA tek başına erişilebilirlik garanti etmez; doğru özelliklerin kombinasyonu, klavye eller ve odak mantık gerçekten kullanılabilir kılan şeydir.
Üretim için en iyi uygulamalar ARIA ile JavaScript
- [[Dönetici HTML elemanları [[Dönetici:0) ARIA rolleri üzerinde her zaman mümkün olduğunda. A nativeurFLT:64) doğal olarak odaklanılabilir, erişilebilir ve yardımcı teknolojiye olan rolünü aktarmaktadır.
- [FONT:0) ARIA özelliklerini senkronize edin[Döneticileri], DOM durumu ile her zaman. Net bir JavaScript modeli kullanın - küçük bir fayda işlevi gibi - birlikte güncelleme özellikleri ve görsel durum.Bu, bir tür güncelleme riskini azaltır.
- [FONT:0)UseENFLT:66] Uyarı ile . Uygulamalı bir öğeyi ve tüm çocuklarını erişilebilirlik ağacından saklamanın yararlı olduğunu varsayar.Bu, uygun olmayan unsurların (başka bir şekilde ekran okuyucunun) odaklanılması için asla uygun değildir.
- [[Dönetici:0)Manage açıkça odaklanır[Döneticileri dramatik bir şekilde değiştirirken, bir modal kapanırken, öğe seçilir ve menü düğmesine döndürür.If'sİLFLT:68) yöntemi genellikle DANIŞİD:69.
- [FONT:0)Provide açık etiketler[[Dönetici) her interaktif element için görünür etiket mevcut olduğunda veya [[FONTD:71) mevcut bir etiketle ilişkilendirerek, [[FONTD:72|bent >
- [[Döneticileri ile test edin[FONTD:0) Gerçek kullanıcılarla test edin[Dönetici 1) yardımcı teknolojiye güvenen araçlar sadece erişilebilirlik sorunlarının% 30-40'ını yakalamak. Kullanıcı geri bildirimler ARIA mantığınızın bize uygulanabilir bir deneyimle tercüme olup olmadığını anlamak için paha biçilmez.
Common Pitfalls Kaçmak için
Sık sık bir hata, beklenen klavye etkileşimi sağlamadan bir elemente bir ARIA rolü uygulanır. Örneğin, [[Dönetici:73|) aurFLT:74. ancak not ekleme:75| ve bir anahtarlama eller için bir diğeri, rutin güncellemeler için, mevcut görevini kesmek için rutin güncellemeler için [[76|tans.
Başka bir pitfall yanlış roller. AİLFLT:77) sadece çocuklar dahil olmak üzere, ve her sekme, ilgili bir şekilde bir tane kontrol etmelidir:79). Bu kuralları ihlal etmek, yapıyı yanlış yorumlamak için yardımcı teknolojilere neden olabilir.
Son olarak, kullanıcı başlatmadan meydana gelen dinamik değişikliklerden kaçının. ARIA özellikleri ve odaklanma sadece kullanıcı eylemlerine veya uygulama durumuna yanıt verme durumunda güncellemeli.Kullanıcının her birkaç saniye sonra bir elementi otomatik olarak yeniden finanse etmesi veyaFLT:80) bölgeleri çok sık sık sık sık sık bir yönlendirme deneyimi yaratır.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
JavaScript ve ARIA ile erişilebilir zengin internet uygulamaları hem teknik bir disiplindir ve kapsayıcı tasarıma bağlılık sağlar. ARIA, genel HTML konteynerlerini tanınabilir widget'lara dönüştürürken, JavaScript onları dinamik davranışlarla, klavye navigasyonu ve devlet yönetimi ile hayata geçirir. [Dönetici:81,EN,FLT:82], [[83|benzerv| ve diğerleri – görsel arayüzle sürekli olarak muhafaza edilir.
Burada açıklanan kalıpları ve en iyi uygulamaları takip ederek, geliştiriciler herkes için çalışan web uygulamaları oluşturabilir: touch, fare, klavye, ekran okuyucu ve ses kontrol kullanıcılarının yanı sıra Access, JavaScript geliştirme sürecinin ayrılmaz bir parçasıdır.Daha fazla okuma için, başvuru sahibi olan her bir teknolojiyle ve daha zenginleştirme uygulamalarınızı gerçekten de erişilebilir kılar.