最近在做swt ,写一个桌面应用,要与web界面交互,也就java与javascript通信
用到的控件是
org.eclipse.swt.browser.Browser
首先说下,java 怎么调用 javascript
browser.execute(arg0)
arg0 里面写javascript脚本
browser.execute("alert('123'");就可以了
再说下,在javascript里怎么调用 java
首在javascript里定义一个function
function test() { callJava(); }
注意这个callJava();
其实就是用这个函数与browser进行绑定,怎么绑定呢?
自己写个类继承BrowserFunction
private final class CallJava extends BrowserFunction {
/**
* Constructor
*
* @param arg0
* @param arg1
*/
public CallJava (Browser arg0, String arg1) {
super(arg0, arg1);
}
/**
* {@inheritDoc}
*
* @see org.eclipse.swt.browser.BrowserFunction#function(java.lang.Object[])
*/
@Override
public Object function(Object[] arg0) {
logger.debug("ImageSelect");
return super.function(arg0);
}
}
然后 new CallJava (browser, "callJava");
这个时候 ,只要javascript调用了callJava就会调用 CallJava类里的 function方法,Object[] arg0就是传过来的参数