Kemarin saya memodifikasi halaman EPG pada set-top box dan mengalami masalah kecil. Saat pengguna membeli game, kotak dialog konfirmasi pembelian perlu muncul. Fokus default kotak dialog harus pada tombol "Batal". Ini adalah persyaratan yang sangat sederhana, dan dapat dicapai dengan menggunakan metode fokus () JavaScript. Contoh kode sederhana adalah sebagai berikut:
document.geteLementById ("batal"). focus ()Tapi yang sulit adalah bahwa set-top box benar-benar lubang besar. Karena kompatibel dengan semua model set-top box yang ada, 8 set-top box perlu diadaptasi. Kemudian muncul masalah! Kotak set-top ZTE B600 tidak dapat mengatur fokus ke tombol Batal sama sekali. Inilah solusi saya:
Pertama, konfirmasi apakah set-top box mendukung metode getElementById () dan apakah berhasil memperoleh elemen dengan ID "batal": metode pengujian sangat sederhana. Saya langsung menulis tes <p id = "test"> lain, dan kemudian mendapatkan elemen dengan "tes" id di tempat yang sama, dan melakukan dokumen operasi sederhana.getElementById ("tes"). INNERHTML = "Hello"
Akhirnya, saya menggunakan "coba ... tangkap (e) ..." untuk menangkap alasan mengapa "fokus ()" gagal
try () {<span style = "White-space: pre"> </span> document.geteLementById ("cancel"). focus ()} catch (e) {<span style = "space putih: pre"> </span> alert (e.name + ":" + e.what ()); }Tapi itu aneh! Hasil dari dua langkah di atas menunjukkan bahwa set-top box mendukung fokus () dan getElementById (), tetapi itu tidak dapat mengatur fokus ke kotak dialog pop-up.
Setelah lebih dari satu jam perjuangan, bos besar akhirnya muncul, dan dia memecahkan masalah hanya dengan kalimat sederhana! Dimungkinkan untuk secara aktif memanggil Flur () untuk membatalkan fokus asli!
document.geteLementById ("beli"). flur ()Kemudian masalahnya terpecahkan. Saya harus mengungkapkan perasaan saya! Dalam proses menyelesaikan masalah ini, ide -ide saya sendiri sebenarnya cukup benar, tetapi pengetahuan saya jelas tidak cukup. Kesenjangan antara pemrogram umum dan pemrogram senior tidak hanya tentang menyelesaikan masalah, tetapi juga tentang pengalaman dan pengetahuan!