Domanda

Mi piacerebbe essere in grado di chiamare con javascript in funzione della mia classe JNLP. Supponiamo che nel mio applet Ho una funzione definita in questo modo: 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>

E 'questo il modo corretto per richiamare le funzioni applet JNLP-dispiegati da javascript? Causa questo non mi dà nulla.

È stato utile?

Soluzione

ho capito molto tempo fa, ma ho dimenticato di rispondere alla mia domanda. Così qui è:

Supponiamo di definire l'applet in questo modo:

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

È possibile ottenere un javascript! maniglia per l'applet in questo modo:

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

Ora, qualsiasi metodo che avete nel vostro applet, è meglio tornare stringa o un valore di base, ma anche se non si può operare su di esso a patto di saper suoi metodi. Continuando il mio esempio da sopra, se nel vostro applet si dispone di una funzione definita in questo modo:

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

Poi si può chiamare con il tuo javascript in questo modo:

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

E complimenti, è chiamato un metodo di applet Java da JavaScript che è stato distribuito da JWS.

C'è un altro modo di farlo, ma avrebbe funzionato solo in Firefox, quindi meglio utilizzare questo. LiveConnect ancora regola si applica, anche se la tecnologia è obsoleta.

Altri suggerimenti

Mi rendo conto che le applet lanciati usando JNLP non sono più accessibili a JS, ma potrei sbagliarmi. Per indagare ulteriormente, mi sento di raccomandare la rimozione dei deployJava.js e duro codifica l'elemento applet.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top