2010-04-06 5 views
2

CloseHandler 및 Window.ClosingHandler()가 작동하지 않거나 IE와 동일한 방식으로 Firefox를 반대로 트리거하지 않는 것으로 보입니다.CloseHandler <Window>과 Window.ClosingHandler()가 IE에서 다르게 작동합니다.

Window.addWindowClosingHandler(new Window.ClosingHandler() { 

        @Override 
        public void onWindowClosing(ClosingEvent event) { 
         event.setMessage(message); 

        } 




     Window.addCloseHandler(new CloseHandler<Window>() { 

        @Override 
        public void onClose(CloseEvent<Window> event) { 
         //Window.alert("debug1"); 
         if(recordId!=null){ 


          DatabaseQueryServiceAsync dbQueryService = DatabaseQueryService.Util.getInstance(); 
          dbQueryService.releaseRecordLock(recordId, new AsyncCallback<String>() { 

           @Override 
           public void onFailure(Throwable arg0) { 
           } 

           @Override 
           public void onSuccess(String arg0) { 

           } 
          }); 



         } 
        } 


       }); 

       }); 

예를 들어, IE의 ClosingHandler는 위젯 내에서 패널을 바꿀 때 메시지를 표시합니다. 이것은 Firefox에서 발생하지 않습니다.

IE에서 창을 닫을 때 CloseHandler가 트리거되지 않는 것처럼 보이지만 firefox에서는 닫히지 않습니다. 흥미로운 점은, addCloseHandler() 메소드에 Window.alert ("debug1") 메시지를 넣으면 아래의 콜백을 실행하지만, 제거하면 바로 콜백이 발생하지 않는다는 것입니다 . 파이어 폭스에서는 두 가지 상황 모두에서 콜백을 실행하고 실행합니다. 그래서, 나는 기본적으로 내 머리카락을 꺼내서 무슨 일이 일어나고 있는지 정말로 이해하지 못하고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사.

답변

0

개인적으로는 addCloseHandler을 많이 사용하지는 않았지만 addClosingHandler은 탐색을 확인하는 데 매우 유용합니다.

"위젯 내 패널 교체"라고 말하면 무슨 뜻인지 잘 모르겠습니다. 히스토리 토큰을 변경하고 있습니까? (즉 History.newItem("page"); 또는 History 위젯) DOM에 위젯을 수동으로 추가 하시겠습니까? 그러나 두 경우 모두 IE와 Firefox 모두 ClosingEvent을 실행해야합니다.

내 경험이 ClosingEvent 인 것은 브라우저 전체에서 매우 균일하다는 점입니다. 따라서 더 자세히 살펴보면 정확한 차이점을 설명 할 가치가 있습니다.

+0

사용자가 ClosingEvent를 확인한 후에 만 ​​코드를 실행하려면 CloseHandler *가 실제로 유용합니다. –

관련 문제