2012-11-04 1 views
1

현재 포커스 된 요소가 document.activeElement를 사용하여 입력인지 여부를 테스트하고 있습니다. 그것은 [object HTMLInputElement]가 반환 될 때, 나는 이것을 테스트하기 위해 아래 로직을 사용할 수있을 것이라고 추측하지만, 항상 false를 반환합니까? 구글의 빠른 검색이 논리가 완벽하게 유효 알 수 있듯이document.activeElement는 [object HTMLInputElement]를 반환하지만 HTMLInputElement의 인스턴스는 false와 같습니다.

document.activeElement instanceof HTMLInputElement 

사람은, 내가 잘못 알아?

감사합니다.

+2

이 질문에 컨텍스트를 추가 할 수 있습니까? 일부 코드, 아마도? 이것은 꽤 괜찮습니다 [여기] (http://jsfiddle.net/nCT7X/). – raina77ow

+0

감사합니다 raina, 이건 내 Stackoverflow 경력에 좋은 시작되지 않습니다! console.log ("문자열"+ document.activeElement instanceof HTMLInputElement)를 호출하고 괄호 안에 조건을 래핑하는 것을 잊어 버렸기 때문에 항상 false를 반환했습니다. 그것은 그 당시의 일 중 하나였습니다 ... – james

+0

더 많은 컨텍스트와 이것을 수행하는 브라우저를 제공 할 수 있습니까? 이 JSFiddle에서 설명하는 내용은 잘 작동합니다. http://jsfiddle.net/jzQ6B/ – skyline3000

답변

0

hasfocus 메소드를 사용하십시오.

activeElement 현재 문서에서 활성 요소로 지정된 개체에 대한 참조를 반환합니다.

문서에서 한 번에 하나의 요소 만 활성화 할 수 있습니다. 활성 요소에는 반드시 포커스가있는 것은 아니지만 포커스가있는 요소는 항상 문서의 활성 요소입니다. 예를 들어, 전경 윈도우가 아닌 창 내의 활성 요소에는 포커스가 없습니다.