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.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>
Is this the proper way to call JNLP-deployed applet functions from javascript? Cause this one doesn't give me anything.
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="com.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.