Hoe verwijder je de focus in javascript?

Ik weet dat dit niet zo moeilijk zou moeten zijn, maar ik kon het antwoord niet vinden op Google.

Ik wil een stukje javascript uitvoeren dat de focus zal wissen van welk element dan ook, zonder van tevoren te weten op welk element de focus ligt. Het moet zowel in Firefox 2 als in modernere browsers werken.

Is er een goede manier om dit te doen?


Antwoord 1, autoriteit 100%

Antwoord: document.activeElement

Om te doen wat je wilt, gebruik je document.activeElement.blur()

Als u Firefox 2 moet ondersteunen, kunt u dit ook gebruiken:

function onElementFocused(e)
{
    if (e && e.target)
        document.activeElement = e.target == document ? null : e.target;
} 
if (document.addEventListener) 
    document.addEventListener("focus", onElementFocused, true);

Antwoord 2, autoriteit 42%

.focus()en dan .blur()iets willekeurigs op je pagina. Aangezien slechts één element de focus kan hebben, wordt het naar dat element overgebracht en vervolgens verwijderd.


Antwoord 3, autoriteit 26%

document.activeElement.blur();

Werkt verkeerd op IE9 – het vervaagt het hele browservenster als het actieve element de hoofdtekst van het document is. Beter om te controleren op dit geval:

if (document.activeElement != document.body) document.activeElement.blur();

Antwoord 4, autoriteit 22%

Geen van de antwoorden die hier worden gegeven, zijn helemaal correct wanneer u TypeScript gebruikt, omdat u misschien niet weet welk type element is geselecteerd.

Dit zou daarom de voorkeur hebben:

if (document.activeElement instanceof HTMLElement)
    document.activeElement.blur();

Bovendien zou ik het gebruik van de oplossing in het geaccepteerde antwoord ontmoedigen, aangezien de resulterende vervaging geen deel uitmaakt van de officiële specificatie en op elk moment kan breken.


Antwoord 5

Voor iedereen die typoscript gebruikt, gebruik

(document.activeElement as HTMLElement).blur();

Dit zorgt ervoor dat het element van het type HTMLElementis


Antwoord 6

dummyElem.focus() waarbij dummyElem een ​​verborgen object is (heeft bijvoorbeeld een negatieve zIndex)?


Antwoord 7

Je kunt window.focus();

. aanroepen

maar verplaatsen of de focus verliezen zal ongetwijfeld hinderlijk zijn voor iedereen die de tab-toets gebruikt om door de pagina te navigeren.

je zou kunnen luisteren naar keycode 13 en het effect achterwege laten als de tab-toets wordt ingedrukt.


Antwoord 8

Met jQuery is het gewoon: $(this).blur();

Other episodes