Hvordan fjerner du fokuset i JavaScript?
Jeg vet at dette ikke burde være så vanskelig, men jeg kunne ikke finne svaret på Google.
Jeg vil kjøre et stykke JavaScript som vil fjerne fokus fra hvilket som helst element det er på uten å vite på forhånd hvilket element som har fokuset. Det må fungere i Firefox 2 så vel som i mer moderne nettlesere.
Er det en god måte å gjøre dette på?
Svar #1
Svar: document.activeElement
For å gjøre det du vil, bruk document.activeElement.blur()
Hvis du trenger å støtte Firefox 2, kan du også bruke dette:
function onElementFocused(e)
{
if (e && e.target)
document.activeElement = e.target == document ? null : e.target;
}
if (document.addEventListener)
document.addEventListener("focus", onElementFocused, true);
Svar #2
.focus() og deretter .blur() noe annet vilkårlig på siden din. Siden bare ett element kan ha fokus, overføres det til det elementet og fjernes deretter.
Svar #3
Ingen av svarene som gis her er helt korrekte når man bruker TypeScript, siden du kanskje ikke vet hvilken type element som er valgt.
Dette vil derfor være å foretrekke:
if (document.activeElement instanceof HTMLElement)
document.activeElement.blur();
Jeg vil dessuten fraråde å bruke løsningen som er gitt i det aksepterte svaret, siden den resulterende uskarpheten ikke er en del av den offisielle spesifikasjonen, og kan slutte å fungere når som helst.
Svar #4
document.activeElement.blur();
Fungerer feil på IE9 - det gjør hele nettleservinduet uskarpt hvis aktivt element er dokumentets kropp. Bedre å sjekke for dette tilfellet:
if (document.activeElement != document.body) document.activeElement.blur();
Svar #5
For alle som bruker typescript, bruk
(document.activeElement as HTMLElement).blur();
Dette sørger for at elementet er av typen HTMLElement
