2010-05-03 2 views
3

입력 영역에 커서 포커스를 구현하려고 시도했으며 IE에서 많은 골칫거리가있었습니다. 나는 (타임 아웃을 변경하여 큰 숫자로) 줄을 따라 시도했다 :IE에서 초점을 못하는 애플릿

setTimeout(function() { document.getElementById('myInput').focus(); }, 10); 

그리고 작동하지 않는다. 페이지에 애플릿이 있다는 것을 알았습니다. 애플릿을 제거하면 위의 작업이 수행됩니다. 또한 focus() 트리거 전에 경고를하면 작동합니다.

애플릿은 특별히 (실제로 사용자의 MAC 주소를 검색합니다.) 애플릿은 MAC 주소를 DOM에 보내기 위해 외부 JS 함수를 한 번 호출합니다. 그 JS 함수의 끝에 초점 (시간 초과 및 모두) 퍼팅 시도했지만 그 중 하나를 작동하지 않습니다.

무엇이 잘못 될 수 있습니까? Firefox에서는 제대로 작동하지만 IE에서는 정상적으로 작동하지 않습니다.

현재 설정 :

//This is called from within the applet using a window.call 
function everythingDone() 
{ 
$("#someinput").focus(); 
//setTimeout(function() { document.getElementById('someInput').focus(); }, 1000); 
}; 

$(function() 
{ 
    var applet = "<object classid='clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA' width='0' height='0'><param name='code' value='someapplet.class' /><param name='archive' value='/someapplet.jar' /></object>"; 
    $("#appletarea").html(applet); 
    //setTimeout(function() { document.getElementById('someInput').focus(); }, 1000); 
}); 

답변

2

이 IE를위한 썬 자바 플러그인의 악명 버그입니다. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4984794에서 전체 토론을 찾을 수 있습니다. 불행히도 버그는 재현성이 없어 닫힙니다! 제안 된 해결 방법 중 다음 나를 위해 큰 일 :

Crookster에게

사람이 관심이 있다면

을, 나는 이에 대한 해결 방법을 찾을 생각합니다.) (

인 JPanel 패널 = 새로운 JPanel의; 애플릿의 start() 메서드에서

의 다음을 추가 this.add (panel); panel.addFocusListener (새 FocusAdapter() {공개 무효 의 focusGained (의해 FocusEvent E) {JSObject를 승 = (의 JSObject) JSObject.getWindow (이 께) win.eval ("onAppletLoad();")}}); panel.requestFocusInWindow();

그런 다음, HTML 코드 내에서 다음 함수 추가 :

기능 onAppletLoad() { myField.focus를(); // 여기서 myField는 필드를 가져옵니다! }

당신은 애플릿

수입 netscape.javascript 에서 다음을 가져올 수있을 것이다. *; // HTML을 가져 오는 데 사용되는 JSObject 클래스 페이지

및 classpath에 plugin.jar를 추가합니다. 당신은 당신의 JRE /JRE/lib 디렉토리 내에서 plugin.jar 찾을 수 있습니다 (1.4.x가의 +)

애플릿이 JPanel에 있고, 단지 가 0,0로 크기를 설정하고 표시되지 않습니다하지만 그것은 .

희망이

8

내가 간단한 해결 방법은 애플릿/객체/embed 태그의 initial_focus 매개 변수를 사용하는 것입니다 생각하는 데 도움이됩니다.

<applet ...> 
    <param name="initial_focus" value="false"/> 
</applet> 
+0

고마워요! 나는 성공했을 때'setFocusable (false)'를 시도했지만, 훌륭하게 작동했습니다! – Andy

+0

감사합니다. 4 시간 동안 집중력을 훔치고있는 것을 파악하고이를 방지하는 방법을 알아 보았습니다. 이것이 해결책입니다. – Oversteer

+0

나를 위해 일한 사람 : IE9 + JRE 6u45 –