Question

Je voudrais pouvoir faire appel à une fonction javascript de ma classe JNLP. Supposons que dans mon applet j'ai une fonction définie comme ceci: 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>

Est-ce la bonne façon d'appeler JNLP déployées fonctions applet de javascript? Parce que celui-ci ne me donne rien.

Était-ce utile?

La solution

Je l'ai depuis longtemps, mais j'ai oublié de répondre à ma propre question. Alors voici:

Supposons que vous définissez votre applet comme ceci:

<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>

Vous pouvez obtenir un javascript! gérer à l'applet comme ceci:

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

Maintenant, quelle que soit la méthode que vous avez dans votre applet, il vaut mieux revenir chaîne ou une valeur primitive, mais même si elle ne vous peut fonctionner sur elle en supposant que vous connaissez ses méthodes. En continuant mon exemple ci-dessus, si votre applet vous avez une fonction définie comme ceci:

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

Ensuite, vous pouvez l'appeler avec votre javascript comme ceci:

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

Et félicitations, vous avez appelé une méthode Java Applet de javascript qui a été déployée par JWS.

Il y a une autre façon de le faire, mais il ne peut fonctionner que dans Firefox, utilisez donc mieux celui-ci. LiveConnect règles sont toujours valides, même si la technologie est obsolète.

Autres conseils

Je comprends que les applets lancé à l'aide JNLP ne sont plus accessibles à JS, mais je peux me tromper. Pour étudier davantage, je recommande la suppression des deployJava.js et coder en dur l'élément applet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top