2010-04-01 28 views
6

Tôi muốn làm điều gì đó như thế này:Execute mã trên cửa sổ gần trong GWT

Window.addWindowClosingHandler(new Window.ClosingHandler() { 

    @Override 
    public void onWindowClosing(ClosingEvent event) { 
     event.setMessage("Really?"); 

     // If user clicks 'ok' in the dialog, execute code below. Else skip the code and return to window. 

     // CODE that does stuff goes here. 
    } 
}); 

Làm thế nào để nắm bắt được thông tin từ hộp thoại?

+0

Đây là bản sao của http://stackoverflow.com/questions/2193098/how-to-catch-user-leaving-a -page-and-canceling-it – aem

+1

Vâng, không thực sự. Những gì tôi muốn làm khác vì tôi muốn có thể thực thi mã khi nút Ok được nhấp và không phải khi nút hủy được nhấp. – stuff22

Trả lời

6

Có cần phải có hai bộ xử lý, một Window.ClosingHandler và một CloseHandler. Xem bên dưới. Điều này sẽ đảm bảo, nếu 'hủy' được nhấp trong hộp thoại, CloseHandler không được kích hoạt. Nhưng nếu 'ok' được nhấp, thì CloseHandler được thực thi và sẽ chạy mã cần thiết. Điều này có thể được sử dụng để phát hành khóa db, đóng gọn các phiên mở, v.v.

Window.addWindowClosingHandler(new Window.ClosingHandler() { 

    @Override 
    public void onWindowClosing(ClosingEvent event) { 
     event.setMessage("You sure?"); 
    } 
}); 

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

    @Override 
    public void onClose(CloseEvent<Window> event) { 
     //Execute code when window closes! 
    } 
}); 
+0

Điều này vì một số lý do không hoạt động tốt trong IE – stuff22

+0

Nếu bạn muốn thực thi một số mã khi người dùng không tiếp tục đóng cửa sổ thì sao? – liftarn

0

Bạn muốn xem xét Window.Confirm cho loại chức năng này.

Bạn có thể đọc lên trên nó ở đây: gwt.user.client.Window

+1

Vâng, tôi đã thử điều đó, nhưng bất chấp những gì bạn chọn trong hộp thoại xác nhận, nó sẽ đóng cửa sổ. Tôi muốn cửa sổ vẫn mở khi nhấn nút hủy. tôi có thể ví dụ như làm một if (Window.confirm ("Thật") { làm stufff } else { dừng cửa sổ đóng } cách duy nhất tôi biết làm thế nào để ngăn chặn nó từ bế mạc là gọi phương thức setMessage() trong sự kiện. Điều này sẽ bật lên một hộp thoại khác ..... nếu tôi bấm hủy bỏ sẽ ngừng đóng cửa sổ, nhưng điều đó thực sự xấu xí. Tôi muốn có thể sử dụng chỉ một hộp thoại. – stuff22

Các vấn đề liên quan