IE および Opera の FOCUS 入力フィールドの問題
問題:
以下のコードは失敗しますInternet Explorer 7 で複製された入力フィールドにフォーカスするには:
function change() { var input = document.getElementById('pas'); var input2 = input.cloneNode(false); input2.type = 'password'; input.parentNode.replaceChild(input2, input); input2.focus(); }
IE の解決策:
Internet Explorer は、要素のフォーカスに関して「遅い」ことで有名です。これを解決するには、setTimeout 関数を使用できます。
setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
Opera の解決策:
Opera では、作成された要素にフォーカスを設定する際に問題が発生する可能性があります。動的に、またはページの読み込み後に表示されます。考えられる解決策については、次のリソースを参照してください:
拡張ソリューション:
要素が利用できない場合に対処するためすぐに、次のスニペットを使用できます:
setTimeout( function( ) { var el = document.getElementById( "myInput" ) ; ( el != null ) ? el.focus( ) : setTimeout( arguments.callee , 10 ) ; } , 10 ) ;
このコードは、要素が使用可能になるまで 10 ミリ秒ごとに要素のフォーカスを再試行し、読み込みの遅さや要素の表示の遅延に関する潜在的な問題に対処します。
以上がIEとOperaでクローンされた入力フィールドにフォーカスを当てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。