Frage

Ich möchte mit Javascript in der Lage sein, eine Funktion meiner JNLP Klasse zu nennen. Nehmen wir an, in meinem Applet habe ich eine Funktion definiert wie folgt aus: 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>

Ist dies der richtige Weg zu rufen JNLP-entfalteten Applet Funktionen von Javascript? Ursache dieses mir nichts nicht geben.

War es hilfreich?

Lösung

Ich habe es vor langer Zeit, aber ich habe vergessen, meine eigene Frage zu beantworten. Also hier ist es:

Nehmen wir an, Sie definieren Ihr Applet wie folgt aus:

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

Sie können eine Javascript bekommen! Griff zum Applet wie folgt aus:

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

Nun, welche Methode Sie in Ihrem Applet haben, ist es besser zurückgeben String oder ein Grundwert, aber selbst wenn es nicht können Sie auf es arbeiten vorausgesetzt, Sie seine Methoden kennen. Fortsetzung meines Beispiels von oben, wenn in Ihrem Applet haben Sie eine Funktion wie folgt definiert:

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

Dann können Sie es mit Ihrem Javascript wie folgt aufrufen:

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

Und Glückwunsch, genannt Sie eine Java-Applet-Methode von JavaScript, die von JWS bereitgestellt wurde.

Es gibt eine andere Art und Weise zu tun, dass aber es würde nur in Firefox arbeiten, also besser diese benutzen. LiveConnect- Regeln gelten weiterhin, auch wenn die Technologie ist veraltet.

Andere Tipps

Ich verstehe, dass Applets ins Leben gerufen mit JNLP sind nicht mehr zugänglich zu JS, aber ich könnte falsch sein. Um zu untersuchen, es weiter, ich würde empfehlen, die deployJava.js und schwer zu entfernen Kodierung das Applet-Elements.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top