ホームページ  >  記事  >  ウェブフロントエンド  >  さまざまなブラウザーで入力要素に確実にフォーカスを設定する方法

さまざまなブラウザーで入力要素に確実にフォーカスを設定する方法

DDD
DDDオリジナル
2024-11-01 07:00:30211ブラウズ

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

IE と Focus イベントの問題

Internet Explorer では focus() イベントの信頼性が低い場合があります。次の関数を使用して入力要素にカーソル フォーカスを設定しようとすると、

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。