어제 셋톱 박스에서 EPG 페이지를 수정하고 작은 문제가 발생했습니다. 사용자가 게임을 구매하면 구매 확인 대화 상자가 나타나야합니다. 대화 상자의 기본 초점은 "취소"버튼에 있어야합니다. 매우 간단한 요구 사항이며 JavaScript의 Focus () 메소드를 사용하여 달성 할 수 있습니다. 간단한 코드 예제는 다음과 같습니다.
document.getElementById ( "취소"). focus ()
그러나 어려운 점은 셋톱 박스가 실제로 큰 구덩이라는 것입니다. 기존의 모든 셋톱 박스 모델과 호환되므로 8 개의 셋톱 박스를 조정해야합니다. 그런 다음 문제가 발생했습니다! ZTE B600의 설정 상자는 취소 버튼으로 초점을 설정할 수 없습니다. 내 솔루션은 다음과 같습니다.
먼저, 설정 상자가 getElementByid () 메소드를 지원하는지 여부와 ID "CANCEL"으로 요소를 성공적으로 얻었는지 확인하십시오. 테스트 방법은 매우 간단합니다. 나는 다른 <p id = "test"> test </p>를 직접 작성한 다음 같은 장소에서 ID "테스트"로 요소를 얻었고 간단한 작업 문서를 수행했습니다. getElementById ( "test"). innerHtml = "Hello".
마지막으로, 나는 "try ... catch (e) ..."를 사용하여 "focus ()"실패한 이유를 잡았습니다.
try () {<span style = "white space : pre"> </span> document.getElementById ( "cancel"). focus ()} catch (e) {<span style = "white space : pre"> </span> alert (e.name + ":" + e.what ()); }그러나 그것은 단지 이상합니다! 위의 두 단계의 결과는 설정 상자가 Focus () 및 getElementByid ()를 지원하지만 팝업 대화 상자에 초점을 설정할 수는 없습니다.
한 시간 이상의 투쟁 끝에, 빅 보스는 마침내 나타 났으며, 단순한 문장으로 문제를 해결했습니다! 원래 초점을 취소하려면 flur ()를 적극적으로 호출 할 수 있습니다!
document.getElementById ( "구매"). flur ()
그런 다음 문제가 해결되었습니다. 나는 내 감정을 표현해야한다! 이 문제를 해결하는 과정에서, 내 아이디어는 실제로 매우 정확하지만 내 지식은 분명히 충분하지 않습니다. 일반 프로그래머와 선임 프로그래머 사이의 격차는 문제 해결뿐만 아니라 경험과 지식에 관한 것입니다!