Wiem, że to nie powinno być takie trudne, ale nie mogłem znaleźć odpowiedzi w Google.
Chcę wykonać skrypt javascript, który usunie fokus z dowolnego elementu, na którym się znajduje, bez wcześniejszej wiedzy, na którym elemencie jest fokus. Musi działać na Firefox 2, a także na nowszych przeglądarkach.
Czy jest na to dobry sposób?
javascript
focus
Andres
źródło
źródło
Odpowiedzi:
Odpowiedź:
document.activeElement
Aby robić, co chcesz, użyj
document.activeElement.blur()
Jeśli potrzebujesz obsługi przeglądarki Firefox 2, możesz również użyć tego:
źródło
document.activeElement.blur()
jest najlepszym sposobem na osiągnięcie tego efektu..focus()
a potem.blur()
coś innego na twojej stronie. Ponieważ tylko jeden element może mieć fokus, jest on przenoszony do tego elementu, a następnie usuwany.źródło
overflow: clip
stylizowanego elementu. Ale możesz po prostu użyć pola, które już istnieje na stronie. Lub utwórz go tylko w tym celu i usuń go ponownie.Działa nieprawidłowo w IE9 - rozmywa całe okno przeglądarki, jeśli aktywnym elementem jest treść dokumentu. Lepiej sprawdzić w tym przypadku:
źródło
Żadna z udzielonych tutaj odpowiedzi nie jest całkowicie poprawna w przypadku korzystania z języka TypeScript, ponieważ możesz nie znać rodzaju wybranego elementu.
Byłoby to zatem preferowane:
Ponadto odradzam skorzystanie z rozwiązania podanego w zaakceptowanej odpowiedzi, ponieważ wynikające z tego rozmycie nie jest częścią oficjalnej specyfikacji i może się zepsuć w dowolnym momencie.
źródło
dummyElem.focus () gdzie dummyElem jest ukrytym obiektem (np. ma ujemny zIndex)?
źródło
Możesz wywołać window.focus ();
ale przesuwanie lub utrata fokusu z pewnością przeszkadza każdemu, kto używa klawisza Tab do poruszania się po stronie.
można było nasłuchiwać kodu 13 i zrezygnować z efektu naciśnięcia klawisza tabulatora.
źródło
Dzięki jQuery po prostu:
$(this).blur();
źródło
this
musi być elementem ukierunkowanym, podczas gdy pytanie wyraźnie stwierdza, że PO nie zna z wyprzedzeniem tego elementu.