Java Applet调用带返回值的javascript函数

时间:2014-06-25 21:20:25

标签: java javascript null applet return

我一直试图绕过这个。我帮忙搞砸了。

类似地调用此网址: 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 - 而不是它有所作为。

有任何建议/意见吗?

1 个答案:

答案 0 :(得分:0)

您使用的是哪个Java版本?最近* racle在applet中更改了lots of things。所有小程序都需要使用官方证书进行签名(自签名不够)。 另请参阅LiveConnect changes since 7u45

现在

a)使用官方证书或

b)如果你使用和最新的java尝试一个旧的,看看它是否有效。如果是这种情况,那么你知道从哪里开始...