Zugriff von JavaScript auf Java-Applet-Methode

  • Hallo,
    mit den neuen FF Versionen erhalte ich keinen Zugriff mehr auf die Applet-Methoden aus JavaScript heraus.
    Für das Applet benutze ich das Object und Embed-Tag:

    <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="100%" height="100%" align="top" codebase="http://java.sun.com/update/1.5.0/j…Version=1,3,0,0" name="ItemApplet">
    <PARAM NAME="java_code" VALUE="com.imsgmbh.client.LMS.applets.BasixQti.class">
    <PARAM NAME="java_codebase" VALUE="/business-englisch/classes">
    <PARAM NAME="java_type" VALUE="application/x-java-applet;version=1.3.1">
    <PARAM NAME="java_alt" VALUE="">
    <PARAM NAME="java_name" VALUE="ItemApplet">
    <PARAM NAME="java_vspace" VALUE="0">
    <PARAM NAME="java_hspace" VALUE="0">
    <PARAM NAME="java_archive" VALUE="system.jar">
    ...
    <EMBED TYPE="application/x-java-applet;version=1.3.1" CODE="com.imsgmbh.client.LMS.applets.BasixQti.class" CODEBASE="/business-englisch/classes"
    ARCHIVE="system.jar" WIDTH="100%" HEIGHT="100%" ALIGN="top" ALT="" NAME="ItemApplet" HSPACE="0" VSPACE="0" PLUGINSPAGE="http://www.uni-deutsch.de/java_install/installnsjava.htm"
    ...
    ></EMBED>
    </OBJECT>


    Mit JavaScript greife ich so auf das Applet zu:

    try{
    var ret="";
    if(ns4 || ns6){
    var applet = document.embeds[0];
    alert(applet);
    ret = applet.getActiveItem();
    alert(ret);
    }
    else{
    ret = document.ItemApplet.getActiveItem();
    }

    }
    catch(e){ alert(e); }


    Wenn ich nun die JS-Funktion ausführe kommt die Fehlermeldung:


    An das Applet selbst komme ich anscheinend ran, denn wenn ich mir die Variable applet ausgebe, ist sie vom Typ "object HTMLEmbedElement".
    Doch wenn dann die Applet-Applet Methode getActiveItem() aufgerufen wird, kommt die Fehlermeldung "TypeError applet.getActiveItem is not a function".

    Die Methode ist 100% im Applet vorhanden und als public und nicht statisch definiert.

    Mit dem IE funktioniert es und es hat bis vor der FF Version 1.5 auch mit FF funktioniert.

    Ich habe versucht auch auf diese Arten auf das Applet, aber ohne ERfolg, zuzugreifen:
    var applet = document.embeds['ItemApplet'];
    var applet = document.getElementById(document.embeds[0].id);
    var applet = document.getElementsByName('ItemApplet');

    Das Objekt selbst krieg ich immer, aber anscheinend ist es nicht das Applet. Oder muss ich die Methode anders aufrufen?

    Bin dankbar für jede Hilfe, da ich absolut nicht weiterkomme!
    Danke!
    jack-flash

  • Ich glaube ich habe das gleiche Problem. Verstehe zwar nicht so genau, was du mit dem zugreifen meinst aber auf meiner Hompage befindet sich so eine Javaspielerei,

    [applet archive="huerot.jar" code="huerot.class" height="569" width="475"]
    [param name="credits" value="Applet by Fabio Ciucci (http://www.anfyteam.com)"]
    [param name="res" value="1">
    [param name="image" value="anfy/drkli.jpg"]
    [param name="hueshift" value="40"]
    [param name="overimg" value="NO"]
    [param name="overimgX" value="0"]
    [param name="overimgY" value="0"]
    [param name="textscroll" value="NO"]
    [param name="regcode" value="NO"]
    [param name="reglink" value="NO"]
    [param name="regnewframe" value="NO"]
    [param name="regframename" value="_blank"]
    [param name="statusmsg" value="HueRot applet"]
    [param name="memdelay" value="1000"]
    [param name="priority" value="3"]
    [param name="MinSYNC" value="10"]
    Please [a href="http://www.anfyteam.com/java/"]download Java(tm)[/a].
    [/applet]


    die auch plötzlich nicht mehr geht. Bei mir ist es allerdings erst nach dem letzten Sicherheitsupdate am 5.6 passiert.

    Was nun? Und vor allem, ich geh mal davon aus, dass es bei vielen, vielen anderen nicht-ie-usern nun auch nicht mehr geht. Macht es da noch einen Sinn Sachen in Java zu verwenden?
    Was sagen die FF user im allgemeinen dazu?

    Blue

  • Man muss sich das so vorstellen:
    Es ist eine ganz normale HTML-Seite mit HTML-Objekten und einem Java-Applet. Die User lösen in diesem Applet verschiedene Aufgaben und bei einem Klick auf den HTML-Button, hole ich mir gewisse Infos von dem Applet und sende diese zum Server.

    Ich muss diese Funktion über einen HTML-Button lösen, weil das Applet in vielen Projekten eingesetzt wird und nicht diese Funktion nicht überall vorhanden ist.

    Es geht auch nicht nur um dieses Einzelbeispiel. Wir haben in 15 Projekten an mehreren Stellen Applets und greifen eben teils von JavaScript aus auf eine public Methode des Applets zu. Mit dem neuen FF funktioniert das in keinem der Projekte mehr.

    Ich glaube einfach dass man nicht mehr über das Embed-Tag, zumindest nicht so, auf das Applet zugreifen kann.

    var applet = document.embeds[0];
    var ret = applet.getActiveItem();

    Evtl. ist das ein Bug im FF.
    Grüße
    jack-flash

  • Ich hab jetzt festgestellt, dass es nicht generell an den FF 1.5 Versionen liegt. Wir haben es hier an verschiedenen PCs und bei allen mit FF 1.5.0.4 getestet und nur bei manchen Rechnern führt der JavaScript-Aufruf zu einer Fehlermeldung.
    Bei den anderen Rechnern funktioniert alles ganz normal, obwohl alle Rechner vorher die neueste FF Version geladen haben.

    Ich habe jetzt an meinem FF alle Einstellungen, die annähernd etwas mit Java zu tun haben auf aktiv bzw. true gesetzt. Hat aber nichts gebracht.

    Werd einfach mal den Firefox deinstallieren und neu drauftun. Evtl bringt das was.

    jack-flash