Вызов встроенной функции java-скрипта из GWT

У меня есть приложение GWT, файл html и файл javascript. В приложении GWT я загружаю html-файлы в HTML-панель GWT, а затем ввожу в нее javasript. Я определил пару функций, таких как «отправить», «отменить» и т. д. в файле javasript. У меня есть соответствующая кнопка на странице клиента GWT. Теперь, когда я нажимаю кнопку отправки на странице клиента gwt, она должна вызывать функцию «отправить» файла javascript.

код из файла javascript:

$('#submitButton').click( function () {
      alert('submit clicked');
      dosomething();
    }
  });

Я попытался использовать JSNI, как показано ниже, со страницы клиента GWT.

public native JavaScriptObject submitForm()/*-{
        return $doc.submitButton(); // tried with $wnd.submitButton() as well.
    }-*/;

но он не работает и выдает следующую ошибку

com.google.gwt.event.shared.UmbrellaException: Exception caught: (TypeError)  $doc.submitButton is not a function

person Nish    schedule 24.01.2015    source источник


Ответы (1)


Ошибка кажется довольно ясной - вы вызываете submitButton, которая не является функцией (вероятно, это undefined, если вы не сделали что-то еще, кроме показанного кода). Вероятно, вам следует сделать что-то вроде: $wnd.jQuery('#submitButton').click().

person Igor Klimer    schedule 24.01.2015
comment
Спасибо Игорь. С вашим предложением теперь я не получаю ошибку, но также не задействую функцию javascript. Я попытался указать случайное имя, например $wnd.jQuery('#submitButtonDoesNotExist').click(), я ожидал какой-то ошибки, но ошибки нет и ничего не происходит. - person Nish; 24.01.2015
comment
Можете ли вы вызвать щелчок из консоли Javascript (в Firebug, Chrome Developer Tools и т. д.)? Просто поставьте туда jQuery('#submitButton').click() (здесь нет необходимости в части $wnd). Вы проверили, что у вас действительно есть элемент с идентификатором submitButton в DOM, когда вы пытаетесь вызвать вызов из GWT? - person Igor Klimer; 24.01.2015
comment
Спасибо Игорь. Также добавил элемент с идентификатором submitButton в html-файл, и это сработало. - person Nish; 25.01.2015