我们正在使用 SmartGWT LGPL 4.0,现在我们正在使用隐藏的 iFrame(在与 DynamicForm 相同的画布中定义)使用回调处理文件上传。在上传文件后来自服务器的响应中,我们发回了一些 JavaScript 测试代码,例如正在执行的警报。当尝试访问与公共静态相同的 DynamicForm 文件中定义的 JSNI 方法时,就会出现问题。在作为响应发回的 javascript 代码中,我们通过“window.parent.document.callbackMethod()”调用该方法,但我们收到一条错误消息,指出该函数未定义。似乎“window.parent.document”不是访问 SmartGWT 生成的 DOM 中的外部文档的正确方法。
在与 DynamicForm 相同的画布中定义隐藏的 iFrame 和回调方法是否正确?
有一些代码:
1.- 客户:
....
NamedFrame iFrame = new NamedFrame(nombreIFrame);
iFrame.setVisible(false);
iFrame.setWidth("1px");
iFrame.setHeight("1px");
.....
dynamicForm = new DynamicForm();
dynamicForm.setTarget(nombreIFrame);
dynamicForm.setAction("rest/archivo/add");
dynamicForm.setCanSubmit(true);
....
//JSNI
public native void miFuncion() /*-{
$wnd.alert('Hello');
}-*/;
2.- 服务器 1(有效)
...
@Produces({ MediaType.TEXT_HTML })
public String upload(...){
...
return "<script>alert('Hello')</script>"
}
3.- 服务器 2(它不工作)
...
@Produces({ MediaType.TEXT_HTML })
public String upload(...){
...
return "<script>window.parent.document.miFuncion()</script>"
}
此致
- 浏览器:火狐20.0
- 操作系统:Ubuntu 11.10
- SmartClient 版本:v9.0p_2013-07-14/LGPL 仅开发(2013-07-14 构建)