昨日、セットトップボックスのEPGページを変更し、小さな問題に遭遇しました。ユーザーがゲームを購入する場合、[確認確認確認]ダイアログボックスがポップアップする必要があります。ダイアログボックスのデフォルトの焦点は、「キャンセル」ボタンにある必要があります。これは非常に単純な要件であり、JavaScriptのFocus()メソッドを使用することで実現できます。単純なコードの例は次のとおりです。
document.getElementById( "キャンセル")。focus()
しかし、難しいのは、セットトップボックスが本当に大きなピットであるということです。既存のすべてのセットトップボックスモデルと互換性があるため、8つのセットトップボックスを適応させる必要があります。その後、問題が発生しました! ZTE B600のセットトップボックスは、キャンセルボタンにフォーカスを設定できません。これが私の解決策です:
まず、セットトップボックスがGetElementByID()メソッドをサポートしているかどうか、およびID「キャンセル」で要素を正常に取得したかどうかを確認します。テスト方法は非常に簡単です。別の<p id = "test"> test </p>を直接書き、ID "test"を同じ場所に掲載し、簡単な操作document.getElementById( "test")。
最後に、「focus()」が失敗した理由をキャッチするために「try ... catch(e)...」を使用しました
try(){<span style = "white-space:pre"> </span> document.getElementByid( "キャンセル")。フォーカス()} catch(e){<span style = "white"> </span> alert(e.name + ":" + e.how()); }しかし、それはただ奇妙です!上記の2つのステップの結果は、セットトップボックスがFocus()とgetElementById()をサポートしていることを示していますが、ポップアップダイアログボックスにフォーカスを設定することはできません。
1時間以上の闘争の後、ビッグボスがついに現れ、彼は単純な文で問題を解決しました! flur()を積極的に呼び出して元のフォーカスをキャンセルすることができます!
document.getElementById( "購入")。flur()
その後、問題が解決しました。私は自分の気持ちを表現しなければなりません!この問題を解決する過程で、私自身のアイデアは実際には非常に正しいですが、私の知識は明らかに十分ではありません。一般的なプログラマーと上級プログラマーのギャップは、問題を解決するだけでなく、経験と知識についても解決することです!