【发布时间】:2014-06-25 21:20:25
【问题描述】:
我一直在努力解决这个问题。请帮我解决我搞砸的地方。
类似于调用此 url: http://www.codejava.net/java-se/applet/call-javascript-function-from-java-applet
我从我的 Java Applet 的 init 和 start 方法中调用了浏览器。
Javascript 是这样的:
function getHHandler() {
console.log("handler requested from applet");
return HHandler.handler();
}
HHandler.instance = null;
function HHandler() {
...
}
HHandler.prototype = {
doStuff : function() {
}
};
HHandler.handler = function() {
if(HHandler.instance == null)
HHandler.instance = new HHandler();
return jsb.instance;
};
这是我的小程序中的调试就绪方法 - 至少它应该是没什么特别的:
private Object getHandlerObject() {
Object jo = browser.call("getHHandler", null);
log("call getJSBHandler():" + jo);
return jo;
}
我浏览过 oracles 示例、无数网站、教程、文档,都指向相同的调用和评估方法。
经验 当小程序调用 getHHandler javascript 函数时会发生什么——我可以在浏览器中看到控制台日志,看到该操作确实发生了,但是来自 javascript 的 return 语句永远不会返回到 Java 代码。所以Java留下了一个我没有用的空对象。 我什至仔细检查以确保在 return 语句之前 js var 不为空。
我能理解为什么 browser.call("HHandler.handler", null); 会吓坏并抛出 NotAFunction 异常,但在这种情况下,一切似乎都很顺利,但返回值。
<applet id="appletId" archive="../path/to/applet.jar" code=com.package.Main.class width="1" height="1" mayscript></applet>
applet 是自签名还是根本没有签名都没有关系。添加了 Mayscript - 并不是说它有所作为。
有什么建议/意见吗?
【问题讨论】:
-
“Applet 是自签名还是完全不签名都没有关系。” 它也没有任何区别。 “自签名”小程序现在被认为是未签名的。
标签: java javascript null applet return