2009-12-10 4 views
0

팝업 창을 열고 자바 스크립트를 호출하는 애플릿이있는 웹 페이지가 있습니다. 해당 자바 스크립트 호출로 인해 HTML 입력에서 focus() 호출이 발생하면 브라우저 창이 애플릿 창 앞에 푸시됩니다. 그러나 특정 브라우저, 즉 MSIE에서만 가능합니다. Firefox에서는 애플릿 창이 맨 위에 남아 있습니다. 어떻게 그 행동을 MSIE에서 일관되게 유지할 수 있습니까? Java 용 구형 Microsoft VM을 사용하면 원하는 (애플릿 창을 앞에 표시합니다.) 결과를 얻을 수도 있습니다.애플릿 - 자바 스크립트 상호 작용에서의 포커스 동작

HTML 코드 :

<html> 
    <head> 
     <script type="text/javascript"> 
      function focusMe() { 
       document.getElementById('mytext').focus(); 
      } 
     </script> 
    </head> 
    <body> 
     <applet id="myapplet" mayscript code="Popup.class" ></applet> 
     <form> 
      <input type="text" id="mytext"> 
      <input type="button" onclick="document.getElementById('myapplet').showPopup()" value="click"> 
     </form> 
    </body> 
</html> 

자바 코드 :

public class Popup extends Applet { 
    Frame frame; 
    public void start() { 
     frame = new Frame("Test Frame"); 
     frame.setLayout(new BorderLayout()); 
     Button button = new Button("Push Me"); 
     frame.add("Center", button); 
     button.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent e) { 
       frame.setVisible(false); 
      } 
     }); 
     frame.pack(); 
    } 
    public void showPopup() { 
     frame.setVisible(true); 
     JSObject.getWindow(this).eval("focusMe()"); 
    } 
} 

답변

-1

진짜 문제는 왜 애플릿을 사용하고 있습니까? Java를 마친 이후로 꽤 오랜 시간이 걸렸지 만 예제에서 많은 코드를 제거하지 않았다면 단순한 대화 상자를 수행하는 것처럼 보입니다. 예를 들어,DojojQuery과 같은 여러 JavaScript 라이브러리를 통해 쉽고 저렴하게 수행 할 수 있습니다.

+0

예, 삭제되었습니다. 실제 애플릿은 Ajax가조차 만들어지기 전에 수년 전에 작성된 레거시 코드입니다. 나는 이것을 확실히 순수한 웹 기반 구현으로 전환하는 것을 고려하고 있지만 상당한 양의 코딩이 필요합니다. – Dan

+0

나는 그것이 두려웠다. 대화 상자의 기능에 따라 기존 JavaScript 라이브러리에서 일부 작업을 끝내기를 원할 수도 있습니다. 다음은 사용 가능한 여러 가지 JavaScript 대화 도구의 간단한 목록입니다. http://stackoverflow.com/questions/1884096/modern-windowless-popups/1884343#1884343 –

2
// JSObject.getWindow(this).eval("focusMe()"); 
frame.requestFocuse(); 

이러한 단어는 반드시 변경해야합니다.

0

오라클이 웹 브라우저에서 애플릿을 더 많이 지원하도록 권장해야합니다. 어쨌든 그들은 애플릿 기술인 JavaFX 기술을 사용하려고 시도하고 있습니다. 초점 사안에 관한 한, 이것은 복잡해 보입니다. 기본 rigt를 얻는 것은 어떨까요? Applet steals Focus을 참조하십시오.