Eu sei que isso não deve ser tão difícil, mas não consegui encontrar a resposta no Google.
Eu quero executar um pedaço de javascript que limpará o foco de qualquer elemento em que estiver, sem saber antecipadamente em qual elemento o foco está. Ele tem que funcionar no firefox 2, bem como em navegadores mais modernos.
Existe uma boa maneira de fazer isso?
javascript
focus
Andres
fonte
fonte
Respostas:
Responda:
document.activeElement
Para fazer o que você quiser, use
document.activeElement.blur()
Se você precisa dar suporte ao Firefox 2, também pode usar o seguinte:
fonte
document.activeElement.blur()
é a melhor maneira de obter esse efeito..focus()
e.blur()
outra coisa arbitrária na sua página. Como apenas um elemento pode ter o foco, ele é transferido para esse elemento e depois removido.fonte
overflow: clip
elemento estilizado. Mas você pode simplesmente usar um campo que já existe na página. Ou crie um apenas para esse fim e remova-o novamente.Funciona errado no IE9 - desfoca a janela inteira do navegador se o elemento ativo for o corpo do documento. Melhor verificar esse caso:
fonte
Nenhuma das respostas fornecidas aqui está completamente correta ao usar o TypeScript, pois você pode não saber o tipo de elemento selecionado.
Portanto, isso seria preferido:
Além disso, eu desencorajaria o uso da solução fornecida na resposta aceita, pois o desfoque resultante não faz parte das especificações oficiais e poderia quebrar a qualquer momento.
fonte
dummyElem.focus () onde dummyElem é um objeto oculto (por exemplo, tem zIndex negativo)?
fonte
Você pode chamar window.focus ();
mas mover ou perder o foco provavelmente interferirá em qualquer pessoa que use a tecla tab para se deslocar na página.
você pode ouvir o código da tecla 13 e renunciar ao efeito se a tecla Tab for pressionada.
fonte
Com o jQuery, é apenas:
$(this).blur();
fonte
this
precisa ser o elemento focado, enquanto a pergunta afirma explicitamente que o OP não conhece o elemento focado antes do tempo.