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

DDD
リリース: 2024-11-01 07:00:30
オリジナル
227 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!