Pregunta

Me gustaría ser capaz de llamar con javascript en función de mi clase JNLP. Vamos a suponer que en mi subprograma Tengo una función definida de esta manera: 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>

¿Es esta la forma correcta de llamar a las funciones del applet distribuido-JNLP de JavaScript? Porque éste no me da nada.

¿Fue útil?

Solución

Lo tengo hace mucho tiempo, pero me olvidé de responder a mi propia pregunta. Así que aquí está:

Supongamos que define el applet de esta manera:

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

Usted puede obtener un javascript! manejar al applet como esto:

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

Ahora, cualquiera que sea el método que tiene en su applet, mejor retorno de cuerdas o un valor primitivo, pero incluso si no se puede operar en él asumiendo que conoce sus métodos. Continuando con mi ejemplo anterior, si en el applet tiene una función definida de esta manera:

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

A continuación, se le puede llamar con su javascript de esta manera:

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

y felicitaciones, que llaman a un método Java Applet de javascript que se desplegó por JWS.

Hay otra forma de hacer eso, sino que funcionaría sólo en Firefox, a fin de utilizar mejor esta. LiveConnect reglas se aplican todavía, a pesar de que la tecnología está obsoleta.

Otros consejos

Yo entiendo que los applets que se inicia utilizando JNLP ya no son accesibles a JS, pero puedo estar equivocado. Para investigar más a fondo, yo recomendaría la eliminación de los deployJava.js y codificar duro el elemento applet.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top