【问题标题】:Java Applet calling javascript function with return valueJava Applet 调用带有返回值的 javascript 函数
【发布时间】: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


【解决方案1】:

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

现在

a) 使用官方证书或

b) 如果您使用最新的 Java,请尝试使用较旧的 Java,看看它是否有效。如果是这样,那么您知道从哪里开始...

【讨论】:

  • Java Plug-in 10.60.2.19 Using JRE version 1.7.0_60-b19 x64 我确实尝试使用文字对象(int 和 string)作为返回值,有趣的是,这在 java 中出现了。 Javascript 挂在行 HHandler.handler();行,好像之后的代码没有被执行(甚至没有日志)。
  • 您没有回答完整的问题:您是否尝试过官方证书?如果不是 a) 尝试使用较旧的 java b) 将您的 java 安全滑块降低到中等 c) 将您的 url 添加到异常站点列表和 d) 最后但同样重要的是设置正确的属性
猜你喜欢
  • 2012-03-29
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 2011-06-26
  • 2013-10-07
相关资源
最近更新 更多