[javascript] 자바 스크립트의 초점을 어떻게 정리합니까?

나는 그렇게 어렵지 않아야한다는 것을 알고 있지만 Google에서 답을 찾을 수 없습니다.

포커스가있는 요소를 미리 알지 못하고 어떤 요소에서든 포커스를 지우는 자바 스크립트를 실행하고 싶습니다. 최신 브라우저뿐만 아니라 firefox 2에서도 작동해야합니다.

이를 수행하는 좋은 방법이 있습니까?



답변

대답: document.activeElement

원하는 것을하려면 document.activeElement.blur()

Firefox 2를 지원해야하는 경우 다음을 사용할 수도 있습니다.

function onElementFocused(e)
{
    if (e && e.target)
        document.activeElement = e.target == document ? null : e.target;
}

if (document.addEventListener)
    document.addEventListener("focus", onElementFocused, true);


답변

.focus()그런 다음 .blur()페이지에 임의의 다른 것이 있습니다. 하나의 요소 만 포커스를 가질 수 있으므로 해당 요소로 전송 된 다음 제거됩니다.


답변

document.activeElement.blur();

IE9에서 잘못 작동합니다. 활성 요소가 문서 본문 인 경우 전체 브라우저 창이 흐리게 표시됩니다. 이 경우를 확인하는 것이 좋습니다.

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


답변

선택한 요소의 종류를 알지 못할 수 있으므로 TypeScript를 사용할 때 여기에 제공된 답변 중 완전히 올바른 것은 없습니다.

따라서이 방법이 선호됩니다.

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

결과적으로 흐리게 표현이 공식 사양의 일부가 아니므로 언제든지 깨질 수 있으므로 허용 된 답변에 제공된 솔루션을 사용하지 않는 것이 좋습니다.


답변

dummyElem.focus () 여기서 dummyElem은 숨겨진 객체입니다 (예 : 음의 zIndex가 있습니까)?


답변

window.focus ();를 호출 할 수 있습니다.

그러나 포커스를 이동하거나 잃는 것은 탭 키를 사용하여 페이지를 돌아 다니는 사람을 방해 할 수밖에 없습니다.

키 코드 13을 듣고 탭 키를 누르면 효과가 사라질 수 있습니다.


답변

jQuery를 사용하면 다음과 같습니다. $(this).blur();