WCAG 2.5.2 · A Seviyesi · EN 301 549 9.2.5.2

İşaretçi İptali

İşaretçi eylemlerinin aşağı olayında çalışmamasını ya da iptal edilebilmesini, geri alınabilmesini ister; böylece hatalar düzeltilebilir.

Kısaca

Titremesi, sınırlı el becerisi ya da az görmesi olan kişiler sık sık yanlış yere dokunur. Eylem parmak değdiği anda çalışıyorsa, geri alma şansı yoktur. Parmak kalktığında çalışıyorsa, parmağı kaydırıp iptal edebilirler.

Bu kriter, tek bir işaretçiyle kullanılabilen işlevlerde şunlardan en az birinin doğru olmasını ister: aşağı olayı işlevin hiçbir parçasını çalıştırmaz; tamamlanma yukarı olayında olur ve iptal edilebilir ya da geri alınabilir; yukarı olayı aşağı olayını tersine çevirir; ya da aşağı olayında tamamlamak zorunludur.

Neleri kapsar?

  • Aşağı olay yok: İşlev aşağı olayında çalışmaz; yalnızca basmak hiçbir şey yapmaz. Yerel kontrollerin standart davranışı budur.
  • İptal ya da geri alma: İşlev yukarı olayında tamamlanır ve tamamlanmadan önce iptal etmenin ya da sonrasında geri almanın bir yolu vardır; işaretçiyi hedeften kaydırmak ya da bir geri al düğmesi gibi.
  • Yukarı olayıyla tersine çevirme: Yukarı olayı aşağı olayının sonucunu geri alır; basılı tutulan düğmenin bırakılınca geri alınan önizlemesi gibi.
  • Zorunlu: Aşağı olayında etkinleştirme zorunluysa izinlidir; ekran klavyesi ya da piyano tuşları gibi.
  • Klavye taklidi: Klavye ya da sayısal tuş takımı tuşuna basmayı taklit eden işlevler zorunlu sayılır.
  • Yerel kontroller: Standart bağlantılar ve düğmeler varsayılan olarak yukarı olayında etkinleşir (G212); bunları kullanmak ek çaba olmadan kriteri karşılar.
  • Kapsam dışı: Tarayıcıyı ya da yardımcı teknolojiyi çalıştırmak için gereken eylemler kapsam dışıdır. Sürükleme işlemleri 2.5.7, hareketler 2.5.1 kapsamındadır.

Kimleri etkiler?

Titremesi ya da sınırlı el becerisi olan ve sık yanlış kontrole basan kişiler. Az gören ya da bilişsel engeli olup yanlışlıkla kontrole basanlar. Kazara temasın yaygın olduğu dokunmatik ekran, iz topu ya da baş işaretçisi kullananlar. Bir kontrole dokunup yanlış olduğunu fark eden herkes.

EAA ve EN 301 549'da

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. Kazara etkinleştirmeye karşı koruma, "işletilebilirlik" ilkesinin parçasıdır.

Teknik karşılığı EN 301 549 standardında bulunur. Standart, WCAG 2.5.2'i atıfla alır ve ortama göre ayrı maddelere dönüştürür.

WCAG 2.5.2'in EN 301 549'daki karşılıkları
MaddeOrtamNe ister?
9.2.5.2Web sayfalarıWeb içeriğinin WCAG 2.5.2 kriterini karşılamasını ister.
10.2.5.2Web dışı dokümanlar (PDF, Office dosyaları)Standardın kriteri dokümanlara uyguladığı yerlerde dokümanlar da aynı kuralı karşılamalıdır.
11.2.5.2Web dışı yazılım (yerel mobil uygulamalar)Yazılım, kullanıcıların bir işaretçi eylemini tamamlanmadan önce iptal etmesine izin vermelidir.

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. 2.5.2 kriterinin metni WCAG 2.1 ve 2.2'de aynıdır.

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

Web için kod örnekleri

1. click olayını kullanın

click yukarı olayında tetiklenir ve klavye ve dokunmayla da çalışır. Uymanın en basit yoludur.

Hatalı
<div onmousedown="buy()">Hemen al</div>
Doğru
<button type="button" onclick="buy()">Hemen al</button>

2. pointerdown ya da touchstart üzerinde çalıştırmayın

Eylemi aşağı olayında çalıştırmak iptal şansı bırakmaz.

Hatalı
btn.addEventListener("pointerdown", submitOrder);
Doğru
btn.addEventListener("click", submitOrder); // bırakıldığında tetiklenir

3. Sürükle ve bırak işlemini iptal edilebilir yapın

Kullanıcıların sürüklemeyi iptal etmesine izin verin; örneğin Escape tuşuyla ya da öğeyi özgün yerine bırakarak (G210).

Hatalı
document.addEventListener("pointerup", dropItem); // iptal yolu yok
Doğru
let dragging = false;
document.addEventListener("keydown", e => {
  if (e.key === "Escape" && dragging) { cancelDrag(); dragging = false; }
});
document.addEventListener("pointerup", () => {
  if (dragging) { dropItem(); dragging = false; }
});

4. Yıkıcı eylemden sonra geri alma sunun

Eylem yukarı olayında tamamlanıyorsa, bir geri alma seçeneği kabul edilebilir bir güvence ağıdır.

Hatalı
deleteBtn.addEventListener("click", () => remove(item)); // sonsuza dek gitti
Doğru
deleteBtn.addEventListener("click", () => {
  remove(item);
  showToast("Öğe silindi", { action: "Geri al", onAction: () => restore(item) });
});

5. Yukarı olayıyla tersine çevirme

Aşağı olayında bir şey oluyorsa, yukarı olayının onu geri almasını sağlayın. Örneğin düğme basılıyken gösterilen, bırakılınca gizlenen bir önizleme.

Hatalı
btn.addEventListener("pointerdown", () => openPreview()); // açık kalır
Doğru
btn.addEventListener("pointerdown", () => showPreview());
btn.addEventListener("pointerup",   () => hidePreview());

6. Ekran klavyesi tuşları

Sanal klavye tuşu bir tuş basışını taklit ettiği için aşağı olayında çalışabilir; bu zorunludur.

Hatalı
/* Sıradan bir düğme için aşağı olayını kullanmak */
Doğru
key.addEventListener("pointerdown", () => typeCharacter(key.dataset.char));
// Tuş basışını taklit eder, bu yüzden burada aşağı olayı kabul edilebilir

Mobil için kod örnekleri

Mobilde standart düğmeler parmak kontrolün içinde kalkınca tetiklenir; böylece kullanıcı kaydırarak iptal edebilir. Dokunma anında tetiklenen özel dokunma işleyicileri bunu bozar.

iOS (SwiftUI)

import SwiftUI

struct BuyButton: View {
    var body: some View {
        // Button, kontrolün içinde parmak kalkınca tetiklenir; parmağı kaydırmak iptal eder
        Button("Hemen al") { buy() }

        // Kaçının: ilk dokunuşta çalıştırmak
        // Text("Hemen al").gesture(DragGesture(minimumDistance: 0).onChanged { _ in buy() })
    }
}

Android (Jetpack Compose)

import androidx.compose.foundation.clickable
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier

@Composable
fun BuyButton() {
    // Button ve clickable bırakıldığında tetiklenir; kaydırmak eylemi iptal eder
    Button(onClick = { buy() }) { Text("Hemen al") }

    // Kaçının: pointerInput { detectTapGestures(onPress = { buy() }) }
    // onPress aşağı olayında çalışır.
}

Nasıl test edilir?

  • Basıp kaydırın: Bir kontrole basın, üzerinden kaydırıp bırakın. Eylem çalışmıyor mu?
  • Basılı tutun: Bir kontrolü bırakmadan basılı tutun. Yalnızca basmakla bir şey oluyor mu?
  • Kodu kontrol edin: Bir işlevi çalıştıran mousedown, pointerdown, touchstart ve onPress işleyicilerini arayın.
  • Sürükle ve bırakı kontrol edin: Sürükleme iptal edilebiliyor mu ya da öğe yerine döndürülebiliyor mu? Geri al var mı?
  • Yıkıcı eylemleri kontrol edin: Eylem bırakıldığında tamamlanıyorsa onay ya da geri alma var mı?
  • İstisnaları kontrol edin: Aşağı olay eylemi gerçekten zorunlu mu, sanal klavye tuşu gibi?
  • Mobili kontrol edin: Bir kontrole dokunup kaydırarak uzaklaşın. Eylem iptal oluyor mu?
  • Denetleyiciyi başlangıç olarak kullanın: Otomatik araçlar bir eylemi hangi olayın çalıştırdığını göremez. Bir kişi test etmeli ve kodu okumalıdır.

Sık yapılan hatalar

  • Düğmeler için mousedown ya da touchstart kullanmak: Klasik hata (F101).
  • button yerine özel kontroller: Yerel yukarı olay davranışını kaybedersiniz.
  • İptal edilemeyen sürükle ve bırak: Yanlış bırakma kalıcı olur.
  • Geri alması olmayan silme: Bırakıldığında tetiklenir ama hiçbir şey öğeyi geri getirmez.
  • Kolaylığı aşağı olay zorunluluğuyla karıştırmak: Hız, klavye taklidi olmadıkça gerekçe değildir.
  • Aşağı olayında işlem yapan menüler: Kullanıcı parmağını kaldırmadan bir seçimi kesinleştirirler.
  • Varsayılan olarak dokunma başlangıcında tetikleyen hareket kütüphaneleri: Varsayılanlarını kontrol edin.
  • Üzerine gelme ve odağı unutmak: Yalnızca işaretçinin aşağı olayı kapsamdadır, ama işleyicileri karıştırmak kazalara yol açar.

Kaynaklar

Standart sürümü: EN 301 549 V4.1.1 (2026-09), WCAG 2.2. Bu sayfa bilgilendirme amaçlıdır ve hukuki tavsiye niteliği taşımaz; bağlayıcı metin için Avrupa Erişilebilirlik Yasası'nın (Direktif (AB) 2019/882) ve EN 301 549 standardının resmî metinlerini esas alın.

Corpowid, Gartner tarafından tanınan bir platformdur.

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.

Corpowid hakkında sorularınız mı var?

Bizimle iletişime geçin.

Size en kısa sürede geri dönüş sağlayacağız.