Buradaki bazı cevaplar setTimeout, hedef öğeye odaklanma sürecini geciktirmek için kullanılmasını önermektedir . Bunlardan biri hedefin kalıcı bir diyalog içinde olduğunu belirtiyor. setTimeoutNerede kullanıldığına dair spesifik ayrıntıları bilmeden çözümün doğruluğu hakkında daha fazla yorum yapamam . Ancak, burada olduğu gibi bu konuya giren insanlara yardım etmek için burada bir cevap vermeliyim diye düşündüm
Meselenin basit gerçeği, henüz görünür olmayan bir öğeye odaklanamamanızdır . Bu sorunla karşılaşırsanız, odaklanma denemesi yapıldığında hedefin gerçekten görünür olduğundan emin olun . Kendi durumumda bu çizgiler boyunca bir şeyler yapıyordum
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();
Bu işe yaramadı. Ben sadece $ çalıştırıldığında neler olduğunu fark ( '# elementID'). Focus () `konsolundan yaptığımız işi. Fark - hedefin üzerindeki kodumda, animasyonun tamamlanamayacağı için hedefin etkileneceğinin kesinliği yoktur . Ve ipucu yatıyor
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});
function focusFunction(){$('#elementid').focus();}
beklendiği gibi çalışır. Ben de başlangıçta bir setTimeoutçözüm buldum ve o da işe yaradı. Bununla birlikte, keyfi olarak seçilen bir zaman aşımı, ana cihazın hedef öğenin görünür olmasını sağlama sürecine ne kadar yavaş gittiğine bağlı olarak çözümü er ya da geç kırmak zorundadır.