2015-08-31 2 views
1

Что я пытаюсь сделать?

У меня есть существующая страница (сгенерированная системой автоматически, и у меня нет никакого контроля над ней), в которой я вводил код GWT для изменения поведения страницы после ее загрузки на основе определенных столбцов и расширения функциональности страница. Например, после добавления моего кода GWT ячейки в одном из столбцов таблицы становятся кликабельными, и когда пользователь нажимает на нее, на всплывающей панели отображается пользователю дополнительная информация. Все работает нормально.GWT Обнаруживать изменения или изменения DOM

В чем проблема?

Общая страница, на которой я вводил свой код, имеет разбитую таблицу, которая отображает 15 строк за раз. Теперь, когда я загружаю/обновляю страницу, мой код GWT запускает и разделяет события в определенном столбце, который добавляет функциональность (описанную выше) к ячейкам. Однако, когда пользователь использует левую и правую кнопки для перемещения разбитого на страницу результата, страница не обновляется, так как это асинхронный вызов. Конкретный столбец в новом наборе из 15 строк теперь не имеет потопленных событий, поскольку код GWT не знает, что страница изменилась.

Я пытаюсь найти способ сообщить свой код GWT, который изменил эту страницу, и он должен потопить события в ячейки определенного столбца для новых 15 строк, но не смог найти какой-либо метод или механизм, чтобы помочь мне захватить DOM/Событие изменения документа. Я пробовал это сделать, но не помог:

new ChangeHandler(){ 

      @Override 
      public void onChange(ChangeEvent event) { 
       Window.alert("Something Changed"); 

      } 

Возможно, что у меня что-то очень очевидное. Публикация этого вопроса, чтобы узнать, есть ли простой способ выяснить изменения DOM в GWT. Искали DOM/изменение/мутацию/и т. Д. Без везения.

Если кто-либо знает, как обнаружить изменения DOM в GWT, это действительно будет означать, что в противном случае мы продолжили бы писать собственный код, используя собственные мутации-наблюдатели.

+1

Являются ли страничные кнопки частью сгенерированной страницы? Вы знаете там id? –

+0

Да, кнопки пейджинга являются частью созданной страницы и просто проверяют, что у них есть идентификаторы. Я думаю, что получаю решение, которое вы предлагаете. Большое спасибо El за то, что он дал направление. –

ответ

2

Вы можете попробовать что-то вроде этого:

Сначала получите входные элементы с:

InputElement goOn = DOM.getElementById("IdOfGoOnButton").cast(); 
InputElement goBack = DOM.getElementById("IdOfGoBackButton").cast(); 

Следующая добавить нативный EventHandler:

Event.addNativePreviewHandler(new Event.NativePreviewHandler() { 
    @Override 
    public void onPreviewNativeEvent(Event.NativePreviewEvent event) { 
    if (event.getTypeInt() == Event.ONCLICK) { 
     if (event.getNativeEvent() 
       .getEventTarget() != null) { 
     Element as = Element.as(event.getNativeEvent() 
            .getEventTarget()); 
     if (as.getTagName() 
       .toLowerCase() 
       .equals("input")) { 
      InputElement clickedElement = as.cast(); 
      if (clickedElement.getId().equals(goOn.getId()) || 
       clickedElement.getId().equals(goBack.getId())) { 
      // one of the paging button is pressed 
      } 
     } 
     } 
    } 
    } 
}); 

Надежда, что помогает.

+0

Спасибо тонну El. Был в состоянии разрешить это. Фактически, введение в класс Event дало новые идеи. Я понял, что Event.addNativePreviewHandler дает полную чувствительность веб-страницы, я даже могу знать, движется ли человек над страницей. Теперь я просто ищу клик на странице в любом месте и всякий раз, когда пользователь щелкает, я снова опускаю события в ячейки определенных столбцов в таблице и работает как магия. Понижение происходит до того, как событие клика обработано, поэтому, когда новая страница загружается и пользователь щелкает по ячейке, функция запускается. –

 Смежные вопросы

  • Нет связанных вопросов^_^