Her er noget kode, som jeg vil bruge som eksempel i forbindelse med en artikel, jeg er igang med at skrive.
Bemærk at du skal have jaws.jar i din classpath for at kunne kompilere UrApplet.java
Bemærk i HTML-koden at parameteren scriptable (i Object-embeding-koden) er sat true - det skal den være, for at Java kan få fat i JS
[UrApplet.java]
/**
* @author Søren Munk Skrøder
* Til brug i artiklen "Tilgang af JavaScipt-objekter via Java"
*/
import java.applet.*;
import java.util.*;
import netscape.javascript.*;
public class UrApplet extends Applet {
private JSObject win;
public void init() {
try{
win = JSObject.getWindow(this);
Timer t = new Timer();
t.schedule(new JSTask(), 0, 100);
} catch(Exception ex) {
getAppletContext().showStatus(ex.toString());
}
}
private class JSTask extends TimerTask {
private Date data = new Date();
public void run() {
String status = (String) win.getMember("status");
if(status.equals("running"))
data = new Date();
win.eval("data='"+data.toString()+"'");
win.eval("updateData()");
}
}
}
[ur.html]
<html>
<head>
<script language="JavaScript">
var data = "";
var status = "running";
function updateData() {
document.getElementById("data").innerHTML = data + " - "+ status+"... ";
}
function startClock() { status="running"; }
function stopClock() { status="stopped!"; }
</script>
</head>
<body>
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="0" height="0" align="baseline" codebase="
http://java.sun.com/products/plugin/1.2.2/jinstall-1_2_2-win.cab#Version=1,2,2,0">
<PARAM NAME="code" VALUE="UrApplet.class">
<PARAM NAME="scriptable" VALUE="true">
</OBJECT>
<form>
<span style="margin:3px; border:2px #0000ff solid;" id="data">test</span>
<input type="button" onClick="java script:startClock()" value="START"/>
<input type="button" onClick="java script:stopClock()" value="STOP"/>
</form>
</body>
</html>
Det hele kunne måske nok gøres lidt mere elegant (og jeg er også ved at finde ud af, om jeg ikke kan få get/setMember til at virke i stedet for at tildele en værdi via eval - samt kalde metoder via Call)
Det er bl.a. derfor artiklen ikke er færdig endnu (du læser sikker dette Medions :-)
/Søren Munk Skrøder