JavaScript'te şu anda hangi öğenin odağa sahip olduğunu bulmak istiyorum. DOM'a bakıyorum ve henüz ihtiyacım olanı bulamadım. Bunu yapmanın bir yolu var mı ve nasıl?
Bunu aramamın sebebi:
Oklar ve enter
gibi tuşların bir giriş öğeleri tablosunda gezinmesini sağlamaya çalışıyorum. Tab şimdi çalışıyor, ancak enter ve oklar varsayılan olarak çalışmıyor gibi görünüyor. Tuş işleme kısmını ayarladım ama şimdi olay işleme fonksiyonlarında odağı nasıl hareket ettireceğimi bulmam gerekiyor.
document.activeElement`]1 kullanın, tüm büyük tarayıcılarda desteklenir.
Önceden, hangi form alanının odağa sahip olduğunu bulmaya çalışıyorsanız, bunu yapamıyordunuz. Eski tarayıcılardaki algılamayı taklit etmek için, tüm alanlara bir "focus" olay işleyicisi ekleyin ve son odaklanılan alanı bir değişkene kaydedin. Son odaklanılan alan için bir bulanıklaştırma olayı gerçekleştiğinde değişkeni temizlemek için bir "blur" işleyicisi ekleyin.
İlgili linkler:
JW tarafından söylendiği gibi, en azından tarayıcıdan bağımsız bir şekilde mevcut odaklanmış öğeyi bulamazsınız. Ancak uygulamanız sadece IE ise (bazıları öyle...), aşağıdaki şekilde bulabilirsiniz:
document.activeElement
EDIT: Görünüşe göre IE her şeyi yanlış yapmamış, bu HTML5 taslağının bir parçası ve en azından Chrome, Safari ve Firefox'un en son sürümü tarafından destekleniyor gibi görünüyor.
Sonunda bulduğum çözümü vermek için bunu buraya koyuyorum.
document.activeInputArea adında bir özellik oluşturdum ve ok tuşları, tab ve enter için klavye olaylarını yakalamak için jQuery'nin HotKeys eklentisini kullandım ve giriş öğelerine tıklamak için bir olay işleyici oluşturdum.
Sonra odak her değiştiğinde activeInputArea'yı ayarladım, böylece nerede olduğumu bulmak için bu özelliği kullanabiliyordum.
Yine de bunu berbat etmek kolaydır, çünkü sistemde bir hata varsa ve odak düşündüğünüz yerde değilse, o zaman doğru odağı geri yüklemek çok zordur.