2

我希望能够用 javascript 调用我的 JNLP 类的函数。让我们假设在我的小程序中我有一个这样定义的函数:public String returnSomething(){ return "bla"; }

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- ########################## IMPORTANT NOTE ############################ -->
<!-- This preview HTML page will work only with JDK 6 update 10 and higher! -->
<!-- ###################################################################### -->
<html>
    <head>
        <title>Test page for launching the applet via JNLP</title>
    </head>
    <body>
        <h3>Test page for launching the applet via JNLP</h3>
        <script src="http://java.com/js/deployJava.js"></script>
        <script>
            var attributes = {
                code:       "winToJnaApi.NewApplet",
                archive:    "JavaApplication6.jar, lib/jna.jar, lib/platform.jar",
                width:      300,
                height:     300,
                name:       "applet",
                id:         "app"
            };
            var parameters = {jnlp_href:"launch.jnlp"}; <!-- Applet Parameters -->
            var version = "1.5"; <!-- Required Java Version -->
            deployJava.runApplet(attributes, parameters, version);
        </script>

    <input type = "button" value ="click" onClick = "document.write(document.getElementById("app").doSomething())">
    <script type="text/javascript">
        document.write(document.getElementById("app"));
    </script>
    </body>
</html>

这是从 javascript 调用 JNLP 部署的小程序函数的正确方法吗?因为这个没有给我任何东西。

4

2 回答 2

6

我很久以前就知道了,但我忘了回答我自己的问题。所以这里是:

假设您像这样定义您的小程序:

<applet id="appletToTest" width=500 height=500 code="com.sample.SampleApplet" archive="JavaApplication6.jar, lib/lib1.jar, lib/lib2.jar">
   <param name="jnlp_href" value="launch.jnlp">
 </applet>

你可以得到一个javascript!像这样处理小程序:

var parentAPPLET = document.getElementById("appletToTest");

现在,无论您在 applet 中有什么方法,它最好返回 String 或原始值,但即使它不返回,您也可以假设您知道它的方法对其进行操作。从上面继续我的例子,如果在你的小程序中你有一个这样定义的函数:

public String returnSomething(){ return "bla"; }

然后你可以像这样用你的javascript调用它:

var parentAPPLET = document.getElementById("appletToTest");
alert (parentAPPLET.returnSomething()); 

恭喜,您从 JWS 部署的 javascript 中调用了 Java Applet 方法。

还有另一种方法,但它只适用于 Firefox,所以最好使用这个。即使该技术已被弃用,LiveConnect 规则仍然适用。

于 2010-11-18T16:05:38.847 回答
1

我知道使用 JNLP 启动的小程序不再可供 JS 访问,但我可能错了。为了进一步调查,我建议删除 deployJava.js 并对 applet 元素进行硬编码。

于 2010-10-30T01:26:12.927 回答