Maison > Article > interface Web > Solution à l'échec de JavaScript lors de l'utilisation de focus() pour définir les astuces focus_javascript
Hier lorsque j'ai modifié la page EPG du décodeur, j'ai rencontré un petit problème. Lorsque les utilisateurs achètent un jeu, une boîte de dialogue de confirmation d'achat doit apparaître. Le focus par défaut de la boîte de dialogue doit rester sur le bouton "Annuler". Une exigence très simple peut être satisfaite en utilisant la méthode focus() de JavaScript. Un exemple de code simple est le suivant :
document.getElementById("cancel").focus()
Mais ce qui est triste, c'est que le décodeur est vraiment un gros gouffre. Puisqu’il doit être compatible avec tous les modèles de décodeurs existants, 8 décodeurs doivent être adaptés. Puis quelque chose s’est mal passé ! Un décodeur ZTE B600 ne peut pas du tout définir le focus sur le bouton d'annulation. Voici ma solution :
Vérifiez d'abord si le décodeur prend en charge la méthode getElementById() et si l'élément avec l'ID "cancel" a été obtenu avec succès : la méthode de test est très simple, il suffit d'écrire un autre 1c0bf0ee030514cb35131aafc73b4c12test
Enfin, "try...catch(e)..." a été utilisé pour capturer la raison pour laquelle "focus()" a échouétry(){ <span style="white-space:pre"> </span>document.getElementById("cancel").focus() }catch(e){ <span style="white-space:pre"> </span>alert(e.name + ": " + e.what()); }
Mais c'est juste bizarre ! Les résultats des deux étapes ci-dessus montrent que le décodeur prend en charge focus() et getElementById(), mais que le focus ne peut pas être défini sur la boîte de dialogue contextuelle.
Après avoir lutté pendant plus d'une heure, le grand BOSS est finalement apparu et a résolu le problème en une seule phrase ! Il est possible d'appeler activement flur() pour annuler le focus d'origine !
document.getElementById("purchase").flur()
Alors le problème est résolu. Je dois l'apprécier ! En train de résoudre ce problème, mon idée était en fait tout à fait correcte, mais mes connaissances n'étaient évidemment pas suffisantes. L'écart entre les programmeurs ordinaires et les programmeurs seniors ne concerne pas seulement les idées pour résoudre les problèmes, mais aussi l'expérience et les connaissances !