Rumah > Artikel > hujung hadapan web > Bagaimana untuk Tetapkan Fokus pada Elemen Input dalam Penyemak Imbas Berbeza?
IE dan Masalah Acara Fokus
Acara fokus() boleh menjadi tidak boleh dipercayai dalam Internet Explorer. Apabila cuba untuk menetapkan fokus kursor pada elemen input menggunakan fungsi berikut:
function change() { var input = document.getElementById('pas'); var input2 = input.cloneNode(false); input2.type = 'password'; input.parentNode.replaceChild(input2, input); input2.focus(); }
IE7 tidak akan bertindak balas kepada panggilan fokus(), meninggalkan kursor di luar elemen input. Untuk membetulkan isu ini dalam IE, gunakan fungsi setTimeout:
setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
Opera Woes
Walau bagaimanapun, menggunakan penyelesaian ini memperkenalkan masalah baharu dalam Opera. Untuk menangani perkara ini, rujuk sumber seperti "Cara menetapkan fokus dalam indeks yang diperlukan pada kotak teks untuk Opera."
Penyelesaian Universal
Untuk memastikan keserasian merentas semua penyemak imbas, masukkan coretan kod yang mengendalikan senario di mana elemen input tidak tersedia serta-merta:
setTimeout( function( ) { var el = document.getElementById( "myInput" ) ; ( el != null ) ? el.focus( ) : setTimeout( arguments.callee , 10 ) ; } , 10 ) ;
Ini coretan mencuba semula memfokus setiap 10 milisaat sehingga elemen tersedia, menyelesaikan isu untuk kedua-dua halaman yang dimuatkan dengan perlahan dan ketersediaan elemen tertangguh.
Atas ialah kandungan terperinci Bagaimana untuk Tetapkan Fokus pada Elemen Input dalam Penyemak Imbas Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!