programing

javascript에서 포커스를 지우려면 어떻게 해야 하나요?

sourcejob 2022. 11. 14. 21:44
반응형

javascript에서 포커스를 지우려면 어떻게 해야 하나요?

이것이 그렇게 어렵지 않다는 것을 알지만, 구글에서 답을 찾을 수 없었다.

어떤 요소에 포커스가 있는지 미리 파악하지 않고 어떤 요소에 포커스가 있는지 클리어하는 Javascript를 실행하고 싶습니다.파이어폭스 2와 최신 브라우저에서도 작동해야 합니다.

좋은 방법 없을까요?

답변:

원하는 작업을 수행하려면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()다른 임의의 것을 당신의 페이지에 표시합니다.포커스를 가질 수 있는 요소는 1개뿐이므로 해당 요소로 전송된 후 제거됩니다.

document.activeElement.blur();

IE9에서 제대로 작동하지 않음 - 활성 요소가 문서 본문인 경우 브라우저 창 전체가 흐려집니다.이 케이스에 대해 확인하는 것이 좋습니다.

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

선택한 요소의 종류를 모르기 때문에, TypeScript 를 사용하고 있는 경우는, 여기에 기재되어 있는 회답 중 어느 것도 완전하게 올바른 것은 없습니다.

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

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

또, 그 결과, 흐림 현상은 공식 사양의 일부가 아니고, 언제라도 파손될 가능성이 있기 때문에, 수락한 회답에 기재된 솔루션을 사용하는 것을 추천합니다.

타이프스크립트를 사용하는 모든 사용자의 경우

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

이를 통해 요소가 HTMlement 유형임을 확인할 수 있습니다.

더미 일렘focus() 여기서 dummyElem은 숨겨진 객체(예를 들어 마이너스 zIndex)입니다.

창구를 호출할 수 있습니다.포커스();

그러나 포커스를 이동하거나 놓치면 탭 키를 사용하여 페이지를 이동하는 데 방해가 됩니다.

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

나는 더 좋다document.activeElement?.blur && document.activeElement.blur().

vue & react를 사용하고 있습니다.제 경우, 컴포넌트 사이의 어느 부분에 대해서도 호출할 수 있습니다.그러면 포커스가 없어집니다.

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

언급URL : https://stackoverflow.com/questions/2520650/how-do-you-clear-the-focus-in-javascript

반응형