noe*_*arr 5 javascript java events gwt jsni
所以,我正在GWT中为嵌入式Web浏览器(Sketchup)设计一个应用程序.我可以通过将window.location值更改为"skp :: myFunciton @ myParams"来控制Sketchup.Sketchup可以在浏览器中执行javascript.我想做的是让sketchup给我模型的内容.
public static native void getModel() /*-{
$wnd.location = "skp:getModel@";
}-*/;
Run Code Online (Sandbox Code Playgroud)
在第二个草图后有一个结果.但是我们如何将它归还给gwt?问题是入口点实例启动了请求,而JSNI只能将静态方法映射到javascript.
我以为我有一个事件和元素的解决方案......
//Sketchup javascript
var gwtwidget = document.getElementById("myTextArea")
gwtwidget.value = "blahblah";
gwtwidget.onchange();
Run Code Online (Sandbox Code Playgroud)
然后听取GWT的变化.唉,它不起作用.Gwt自己的事件系统覆盖,汇集,阻止(或其他)事件.我应该采取什么方法?我已经通过网络搜索信息,但我当然无法理解它.我猜的答案是......
1从javascript(以某种方式)调用入口点实例方法
2从gwt中拾取一个事件,将由gwt(以某种方式)拾取
3设置排序的异步回调接口机制(不知何故)
界面应该非常简单.
例如,假设我们在GWT中有一些对象.假设我们在JS中有一些函数接受一些回调作为参数.所以在gwt中我们会有这样的东西:
public static native void executeFunctionWithCallBack(MyCallback callback)/*-{
var callBackWrapper =function(param) {
callback.@com.package.MyObject::onSuccess(*)(param);
}
$wnd.invokeFunctionWithCallback(callbackWrapper)
}-*/;
Run Code Online (Sandbox Code Playgroud)
如果要调用实例方法,则不仅要公开方法,还要公开应该调用它的实例.例如,您必须将实例作为参数传递给JSNI方法(或以其他方式从JSNI获取).然后创建一个JS函数,它将在实例上调用方法.就这样.没有更多的魔力=)
归档时间: |
|
查看次数: |
2207 次 |
最近记录: |