JavaScript im Browser über Java

Status
Nicht offen für weitere Antworten.

Rex

Bekanntes Mitglied
Liebe Freunde,

noch eine Frage:
Wie kann ich per Java-Applet ein Java-Script ansteuern, dass sich EXTERN auf der selben HTML-Page befindet, wie mein Applet?

Vielen, vielen Dank!
MFG
Rex!
 
Direkt vermutlich gar nicht.
So spontan fällt mir folgende Lösung ein, wobei ich nicht sicher bin, ob es
funktionieren wird.

- In Javascript eine Callbacklasse anlegen, die Javascript Funktionen ausführt.
- Eine Instanz dieser Klasse an das Applet übergeben.
- Das Applet ruft dann, über die Callbackinstanz, die Javascript Funktionen auf.

Es ist einen Versuch wert.
 
Ich fürchte die Lösung von Gast wird nicht funktionieren...

Von Netscape gibt es irgendeine API, die genau das kann, aber ich weiß nicht, welche Browser das alles unterstützen.
 
Arghh... die Neugier. 😉
Ich habe es, wie ich es oben beschrieben habe, versucht. Im IE funktioniert es.

Voraussetzungen:

Das es über Reflexion geht, muss man das Applet signieren oder zum Test mal die
Policy-Datei von Java ändern.

Das hier in %JAVA_HOME%/lib/security/java.policy eintragen.
Code:
grant {
  permission java.security.AllPermission;
};
NICHT VERGESSEN, ES SPÄTER WIEDER ZU ENTFERNEN!

Das Applet
Code:
import java.applet.Applet;
import java.lang.reflect.Method;

public class Callback extends Applet
{
  public void testCallback(Object callback)
  {
    try
    {
      Class clazz = callback.getClass();
      Method call = clazz.getMethod("call", new Class[] {String.class, Object[].class});
      call.invoke(callback, new Object[]{ "callA" , null});
      call.invoke(callback, new Object[]{ "callB" , null});
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  }
}
Das HTML-Zeugs
Code:
<html>
<head>
<script language="javascript" type="text/javascript">
<!--
function Delegate() {}

Delegate.prototype.callA = function() {
  alert("callA()");
}

Delegate.prototype.callB = function() {
  alert("callA()");
}

function testCallback() {
  document.applets[0].testCallback(new Delegate());
}
//-->
</script>
</head>
<body onLoad="Javascript:testCallback();">
<applet codebase="./" code="Callback" width="0" height="0" mayscript></applet>
</body>
</html>

Gruß,
semi
 
Und muss der User vorher erst meinem Applet Access granten, oder wie?
Muss er das unbedingt?


Vielen Dank!
MFG
Rex 😀
 
Ich denke es geht mit der bereits erwähnten API von Netscpe einfacher.

Es handelt sich dabei um das so genannte LiveConnect von Netscape. Du brauchst dazu die netscape.jar, hab aber leider keine Ahnung mehr, wo du sie downloaden kannst.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben