我一直试图绕过这个。我帮忙搞砸了。
类似地调用此网址: http://www.codejava.net/java-se/applet/call-javascript-function-from-java-applet
我在Java Applet的init中启动了调用并启动了浏览器的方法。
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;
};
这是来自applet的调试就绪方法 - 至少应该是没有任何花哨的东西:
private Object getHandlerObject() {
Object jo = browser.call("getHHandler", null);
log("call getJSBHandler():" + jo);
return jo;
}
我已经通过oracles示例,无数网站,教程,文档和所有指向相同的调用和eval方法。
体验 当applet调用getHHandler javascript函数时会发生什么 - 我可以在浏览器中看到控制台日志,看到该操作确实发生了,但是javascript的return语句从未使它返回到Java代码。所以Java留下了一个我没有使用的null对象。 我甚至仔细检查以确保在return语句之前js var不为null。
我能理解为什么 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 - 而不是它有所作为。
有任何建议/意见吗?
答案 0 :(得分:0)
您使用的是哪个Java版本?最近* racle在applet中更改了lots of things。所有小程序都需要使用官方证书进行签名(自签名不够)。 另请参阅LiveConnect changes since 7u45。
现在
a)使用官方证书或
b)如果你使用和最新的java尝试一个旧的,看看它是否有效。如果是这种情况,那么你知道从哪里开始...