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:

Ö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

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.