我花了很长时间编码和搜索这个网站和其他网站,但没有成功。我有一个 GWT 应用程序,它调用 JSNI,然后调用 Applet 来执行一些文件加载。所以当文件加载完成时我需要被回调。尽我所能,我无法调用我的 JavaScript(或 Java)回调。通常你引用 $wnd 变量是这样的:
$wnd.myFunc()
如果我尝试这个(或者我认为可能有效的大量其他变体),它会默默地失败。我什至不能调用像这样简单的东西:
$wnd.alert("Made it")
我尝试过使用window.eval("$wnd.myFunc()");
我也尝试过window.call
具有相同的结果。
我猜测我处于错误的上下文中(GWT 将所有内容都放在 IFrame 中),但我找不到任何选项来访问 GWT 应该放置 "$wnd"
的全局上下文。变量。
出于安全原因,IFrame 应该受到一定的限制,我想知道我是否遇到了故意禁用的情况。
无论如何,我做了很多猜测,但我对 JavaScript 的了解有限,所以也许我忽略了一些简单的事情。
最佳答案
您的 GWT 代码
String value = JsniMethods.decryptData(data, publickey);
在 JsniMethods 类中
public static native String decryptData(String text, String publickey) /*-{
var encrypted = $doc.appletname.methodname(text, publickey);
return encrypted;
}-*/;
你的小程序在html中初始化
<applet name="appletname" code="appletname.class"
archive="appletname.jar" width="0" height="0" MAYSCRIPT="true"
scriptable="true" > </applet>
最后
将您的appletname.jar
放入war文件夹中..
祝你好运
关于javascript - 带回调的 GWT JSNI Applet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14500037/