CloseHandler <Window>и Window.ClosingHandler () работают по-разному в IE - PullRequest
2 голосов
/ 06 апреля 2010

Кажется, что CloseHandler и Window.ClosingHandler () не работают или не запускают события таким же образом под IE в отличие от Firefox.

 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) {

                                }
                            });



                        }
                    }


                });

                });

Например, ClosingHandler под IE отображает сообщение, когда я меняю панель внутри своего виджета. Это не происходит в Firefox.

CloseHandler, похоже, не срабатывает вообще, когда окно закрывается в IE, но делает это в firefox. Интересно отметить, что когда я помещаю сообщение Window.alert ("debug1") в метод addCloseHandler (), он выполняет обратный вызов ниже, но как только я его удаляю, обратного вызова не происходит , В Firefox он работает и выполняет обратный вызов в обеих ситуациях. Итак, я в основном выдергиваю волосы, не понимая, что происходит. Любая помощь будет принята с благодарностью. Спасибо.

1 Ответ

0 голосов
/ 10 апреля 2010

Лично я не нашел большого применения для addCloseHandler, но addClosingHandler очень полезен для подтверждения навигации.

Я не уверен, что понимаю, что вы имеете в виду, когда говорите «поменять панель внутри своего виджета». Вы меняете маркер истории? (т.е. History.newItem("page"); или History виджет) Или, может быть, вы вручную добавили виджет в DOM? Однако в обоих случаях ни IE, ни Firefox не должны запускать ClosingEvent.

Мой опыт работы с ClosingEvent заключается в том, что он довольно одинаков для всех браузеров, поэтому, возможно, стоило бы описать точные различия, которые вы наблюдаете, более подробно.

...