admin管理员组

文章数量:1399788

I would like to be able to call with javascript a function of my JNLP class. Let's assume in my applet I have a function defined like this: 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=".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>

Is this the proper way to call JNLP-deployed applet functions from javascript? Cause this one doesn't give me anything.

I would like to be able to call with javascript a function of my JNLP class. Let's assume in my applet I have a function defined like this: 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./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>

Is this the proper way to call JNLP-deployed applet functions from javascript? Cause this one doesn't give me anything.

Share Improve this question edited Jun 8, 2012 at 10:02 Andrew Thompson 169k41 gold badges222 silver badges436 bronze badges asked Oct 29, 2010 at 13:03 Nikola YovchevNikola Yovchev 10.3k4 gold badges49 silver badges74 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

I got it a long time ago, but I forgot to answer my own question. So here it is:

Let's assume you define your applet like this:

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

You can get a javascript! handle to the applet like this:

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

Now, whatever method you have in your applet, it better return String or a primitive value, but even if it doesn't you may operate on it assuming you know its methods. Continuing my example from above, if in your applet you have a function defined like this:

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

Then you can call it with your javascript like this:

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

And congratulations, you called a Java Applet method from javascript that was deployed by JWS.

There is another way of doing that but it would work only in Firefox, so better use this one. LiveConnect rules still apply, even though the technology is deprecated.

I understand that applets launched using JNLP are no longer accessible to JS, but I might be wrong. To investigate it further, I would remend removing the deployJava.js and hard coding the applet element.

本文标签: javaHow to call WebStartdeployed applet functions from javascriptStack Overflow