>  기사  >  웹 프론트엔드  >  다양한 브라우저에서 입력 요소에 안정적으로 초점을 설정하는 방법은 무엇입니까?

다양한 브라우저에서 입력 요소에 안정적으로 초점을 설정하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-01 07:00:30216검색

How to Reliably Set Focus on Input Elements in Different Browsers?

IE 및 Focus 이벤트 문제

focus() 이벤트는 Internet Explorer에서 불안정할 수 있습니다. 다음 함수를 사용하여 입력 요소에 커서 포커스를 설정하려고 하면:

function change() {
  var input = document.getElementById('pas');
  var input2 = input.cloneNode(false);
  input2.type = 'password';
  input.parentNode.replaceChild(input2, input);
  input2.focus();
}

IE7은 focus() 호출에 응답하지 않고 커서를 입력 요소 외부에 둡니다. IE에서 이 문제를 해결하려면 setTimeout 함수를 사용하십시오.

setTimeout(function() { document.getElementById('myInput').focus(); }, 10);

Opera Woes

그러나 이 솔루션을 사용하면 Opera에 새로운 문제가 발생합니다. 이 문제를 해결하려면 "Opera용 텍스트 상자의 필수 인덱스에 포커스를 설정하는 방법"과 같은 리소스를 참조하세요.

범용 솔루션

모든 브라우저에서 호환성을 보장하려면 입력 요소를 즉시 사용할 수 없는 시나리오를 처리하는 코드 조각:

setTimeout(

  function( ) {

    var el = document.getElementById( "myInput" ) ;
    ( el != null ) ? el.focus( ) : setTimeout( arguments.callee , 10 ) ;

  }

, 10 ) ;

이 조각은 다시 시도합니다. 요소를 사용할 수 있을 때까지 10밀리초마다 집중하여 페이지 로딩 속도가 느리고 요소 가용성이 지연되는 문제를 해결합니다.

위 내용은 다양한 브라우저에서 입력 요소에 안정적으로 초점을 설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.