2010-05-09 37 views
6

Ví dụ trang hiện tại là www.google.com. Nhưng tôi đã nhập một địa chỉ trang web khác trong thanh địa chỉ và được nhấp. Trang web này có đầy đủ mã số GWT.Trình duyệt nút quay lại GWT

Nhưng tôi muốn quay lại trang trước của www.google.com. Vì vậy, tôi đã nhấp vào nút trình duyệt. Nhưng làm cách nào tôi có thể lấy lại nút quay số từ mã GWT hiện tại. Tôi có thể đặt bất kỳ trình xử lý sự kiện backbutton nào trong GWT của trang hiện tại không? Một thông báo cho tôi biết rằng nút quay lại đã được nhấn.

Có giải pháp nào từ GWT không?

Trả lời

1

Bạn có thể triển khai giao diện HistoryListener: phương thức của lớp học onHistoryChanged sẽ được gọi (với mã thông báo String) trên mỗi lần nhấp vào nút quay lại và tiến. Sau đó, bạn có thể tương tác với lớp học History, ví dụ: a back() phương pháp tĩnh để "quay lại". Tuy nhiên, tôi không hoàn toàn chắc chắn nếu nó quay trở lại tất cả các cách để trước khi GWT bắt đầu (nhưng nó chắc chắn giá trị cố gắng ;-).

+0

'HistoryListener' và nói chung * Người nghe không được sử dụng như GWT 1.6 - bạn nên sử dụng trình xử lý thích hợp thay vào đó (trong trường hợp này là' ValueChangeHandler', có thể không rõ ràng như nói 'HistoryHandler'). –

5

Window.ClosingEvent:

Bị sa thải ngay trước khi cửa sổ trình duyệt đóng hoặc điều hướng tới một trang web khác nhau.

Tùy chọn khác là History.addValueChangeHandler, trong đó lắng nghe những thay đổi trong ngăn xếp lịch sử của trình duyệt (xem the docs để biết thêm thông tin).

5

+1 cho Igor và Alex. Dưới đây là một số mã, bạn có thể sử dụng, nếu bạn muốn sử dụng ClosingHandler:

Window.addWindowClosingHandler(new Window.ClosingHandler() { 

     @Override 
     public void onWindowClosing(final ClosingEvent event) { 
      event.setMessage("Don't you think my site is awesome?"); 
     } 
    }); 

Một số thông tin từ Javadoc của ClosingHandler.onWindowClosing():

/* Fired just before the browser window closes or navigates to a different 
    * site. No user-interface may be displayed during shutdown. */ 
0

thử này nó sẽ làm việc

Event.addNativePreviewHandler(new Event.NativePreviewHandler() { 

     @Override 
     public void onPreviewNativeEvent(final NativePreviewEvent event) { 
      if (event.getTypeInt() == Event.ONKEYDOWN) { 
       if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_BACKSPACE) { 
        Element element = Element.as(event.getNativeEvent().getEventTarget()); 

        String tagName = element.getTagName(); 

        System.out.println(tagName); 

        // Add checks for other input controls 
        if (!tagName.equalsIgnoreCase("INPUT") 
           && !tagName.equalsIgnoreCase("TEXTAREA")) { 

         boolean result = Window.confirm("Are you sure?"); 
         if (!result) { 
          event.cancel(); 
         } 
        } 
       } 
      } 
     } 
    }); 
0

bạn cũng có thể sử dụng mã gốc này

public native void call()/*-{ 

    $wnd.onkeydown = GetChar; 

    function GetChar (event) 
    { 
     var key = event.keyCode; 

     var bb = event.target.nodeName; 

     if(key==8 && bb=="BODY")//checking keyCode of key for backspace 
       { 
        var x= window.confirm("Are you sureyou want to leave the page"); 

        if (x==true) 
          { 
           window.history.back(); 
          } 
        else if(x==false) 
          { 

           return false; 
          } 
       } 
     }     
}-*/; 
+0

tất cả những điều này đang hoạt động trên không gian báo chí của người dùng. có phương pháp nào để nhắc người dùng trên nút quay lại trình duyệt không ..? –

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