我试过以下......
我在eclipse中有这个:我在java中有一个按钮,可以在javascript中触发此功能
Object status = browserCtrl.evaluate("return atm.java.webToJavaPerspective()");
然后我在javascript中有这个功能
function atm.java.webToJavaPerspective(){
returnData = {};
//ajaxRequest = some ajaxRequest variable
$.when(ajaxRequest).then(function( data, textStatus, jqXHR ) {
//modify the data
returnData.textStatus = textStatus;
//this return statement should return data to java function
return returnData;
});
//this will return empty object
return returnData;
}
但我总是得到空物。因为ajax请求需要几秒钟,而我的javascript函数返回空对象,等待请求返回数据。
我怎样才能做到这一点..?
答案 0 :(得分:1)
在处理Ajax调用时,如果有结果,则必须从Javascript代码中调用所谓的BrowserFuntion
。
以下是如何定义BrowserFunction
以及如何从Javascript调用它的示例:
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Browser browser = new Browser(shell, SWT.NONE);
browser.setText("<a href='#' onClick='theJavaFunction()'>Click me!</a>");
new BrowserFunction(browser, "theJavaFunction")
{
@Override
public Object function(Object[] objects)
{
System.out.println("Call from Javascript");
return null;
}
};
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
}
此外,来自Vogella的Browser
优秀教程: