Heim > Artikel > Web-Frontend > Lösung für JavaScript-Fehler bei der Verwendung von focus() zum Festlegen von focus_javascript-Tipps
Als ich gestern die EPG-Seite auf der Set-Top-Box änderte, stieß ich auf ein kleines Problem. Wenn Benutzer ein Spiel kaufen, muss ein Dialogfeld zur Kaufbestätigung angezeigt werden. Der Standardfokus des Dialogfelds muss auf der Schaltfläche „Abbrechen“ bleiben. Eine sehr einfache Anforderung kann mit der Methode focus() von JavaScript erfüllt werden. Ein einfaches Codebeispiel lautet wie folgt:
document.getElementById("cancel").focus()
Aber das Traurige ist, dass die Set-Top-Box wirklich eine große Grube ist. Da es mit allen vorhandenen Set-Top-Box-Modellen kompatibel sein muss, müssen 8 Set-Top-Boxen angepasst werden. Dann ist etwas schiefgegangen! Eine ZTE B600-Set-Top-Box kann den Fokus überhaupt nicht auf die Abbrechen-Taste setzen. Das Folgende ist meine Lösung:
Bestätigen Sie zunächst, ob die Set-Top-Box die Methode getElementById() unterstützt und ob das Element mit der ID „cancel“ erfolgreich abgerufen wurde: Die Testmethode ist sehr einfach, schreiben Sie einfach einen weiteren 1c0bf0ee030514cb35131aafc73b4c12test
aus Schließlich wurde „try...catch(e)…“ verwendet, um den Grund zu erfassen, warum „focus()“ fehlgeschlagen isttry(){ <span style="white-space:pre"> </span>document.getElementById("cancel").focus() }catch(e){ <span style="white-space:pre"> </span>alert(e.name + ": " + e.what()); }
Aber es ist einfach seltsam! Die Ergebnisse der beiden oben genannten Schritte zeigen, dass die Set-Top-Box focus() und getElementById() unterstützt, der Fokus jedoch nicht auf das Popup-Dialogfeld gesetzt werden kann.
Nachdem er mehr als eine Stunde gekämpft hatte, erschien endlich der große CHEF und löste das Problem mit nur einem Satz! Es ist möglich, flur() aktiv aufzurufen, um den ursprünglichen Fokus aufzuheben!
document.getElementById("purchase").flur()
Dann ist das Problem gelöst. Ich muss es wertschätzen! Bei der Lösung dieses Problems war meine Idee eigentlich ganz richtig, aber mein Wissen reichte offensichtlich nicht aus. Die Kluft zwischen gewöhnlichen Programmierern und erfahrenen Programmierern besteht nicht nur in Bezug auf Ideen zur Problemlösung, sondern auch in Bezug auf Erfahrung und Wissen!