Gestern habe ich die EPG-Seite im Set-Top-Box geändert und auf ein kleines Problem gestoßen. Wenn Benutzer Spiele kaufen, muss ein Dialogfeld für Kaufbestätigungen angezeigt werden. Der Standardfokus des Dialogfelds muss auf der Schaltfläche "Abbrechen" liegen. Es ist eine sehr einfache Anforderung und kann durch die Verwendung von JavaScript (Focus () -Methode erreicht werden. Einfache Code -Beispiele sind wie folgt:
document.getElementById ("abbrechen"). Focus ()Aber das Schwierige ist, dass die Set-Top-Box wirklich eine große Grube ist. Da es mit allen vorhandenen Set-Top-Box-Modellen kompatibel ist, müssen 8 Set-Top-Boxen angepasst werden. Dann trat ein Problem auf! Ein Set-Top-Feld mit ZTE B600 kann den Fokus auf die Schaltfläche Abbrechen überhaupt nicht setzen. Hier sind meine Lösungen:
Bestätigen Sie zunächst, ob das Set-Top-Box die GetElementById () -Methode unterstützt und ob es das Element mit der ID "Abbrechen" erfolgreich erhalten hat: Die Testmethode ist sehr einfach. Ich habe direkt eine <p id = "test"> test </p> geschrieben und dann das Element mit der ID "Test" an derselben Stelle erhalten und ein einfaches Operation -Dokument durchgeführt.
Schließlich benutzte ich "Versuchen Sie ... fangen (e) ...", um den Grund zu fangen, warum "Focus ()" fehlgeschlagen war
try () {<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 nur seltsam! Die Ergebnisse der beiden oben genannten Schritte zeigen, dass das Set-Top-Feld Focus () und getElementById () unterstützt, aber es kann einfach nicht den Fokus auf das Popup-Dialogfeld setzen.
Nach mehr als einer Stunde Kampf erschien der große Chef schließlich und er löste das Problem mit nur einem einfachen Satz! Es ist möglich, Flur () aktiv anzurufen, um den ursprünglichen Fokus zu stornieren!
document.getElementById ("Kauf"). Flur ()Dann wurde das Problem gelöst. Ich muss meine Gefühle ausdrücken! Bei der Lösung dieses Problems sind meine eigenen Ideen tatsächlich recht korrekt, aber mein Wissen reicht offensichtlich nicht aus. In der Kluft zwischen allgemeinen Programmierern und leitenden Programmierern geht es nicht nur darum, Probleme zu lösen, sondern auch um Erfahrung und Wissen!