2015-05-26 3 views
1

Я использую SWT объект браузера, чтобы загрузить веб-страницу, как это:Затмение SWT: Браузер # оценки() всегда возвращает нуль

Browser browser = new Browser(parent, SWT.BORDER); 
browser.setUrl("http://localhost:18080/app/test-servlet"); 

У меня есть функция для вызова метода оценки. (. Функция вызывается при нажатии на кнопку SWT на контроле)

public void evaluate() { 
    Object content = browser.evaluate("getClientContent();"); 
    System.out.println("content: " + content); 
} 

На веб-странице, Javascript функция getClientContent() является:

<script type="text/javascript"> 
    function getClientContent() { 
     alert("test"); 
     return "test"; 
    } 
</script> 

При нажатии на кнопку тестирования на SWT приложение, я мог видеть окно предупреждения, показанное с «тестом». Но функция calculate() всегда возвращает null. Что не так с кодом? Благодаря

+2

Попробуйте использовать «return getClientContent();» –

+0

Да. Оно работает! Большое спасибо. – CMZS

ответ

3

Вы должны «возвращение» результат в JavaScript, как это:

Object content = browser.evaluate("return getClientContent();"); 
0

Возвращаемые значения ограничены несколькими типами:

Возвращает результат, если таковые имеются, выполнения указанного скрипта.

Оценивает скрипт, содержащий команды javascript, в контексте текущего документа. Если функции или свойства, определенные документом, имеют значение , доступ к которому выполняется скриптом, то этот метод не должен вызываться до тех пор, пока документ не закончит загрузку (ProgressListener.completed() дает уведомление об этом).

Если скрипт возвращает значение с поддерживаемым типом, тогда возвращается значение значения java . Поддерживаемый Javascript -> ява отображения являются:

* Javascript нуль или не определено -> нулевой

* Javascript> номер -> java.lang.Double

* Javascript строка -> java.lang. Строка

* Javascript булево -> java.lang.Boolean

* Javascript массив, элементами которого являются все поддерживаемые типы -> java.lang.Object []

Try, например

Object result = browser.evaluate("return 1;"); 

Если возвращаемый тип не поддерживается ... нуль, кажется, возвращается.

Try, например

Object window = browser.evaluate("return window;"); 

документация для «оценки» утверждает

SWTException отбрасывается, если возвращаемое значение имеет неподдерживаемый тип или , если оценивать сценарий вызывает яваскрипт ошибки быть брошенным.

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

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