Probleme: Java und Cookies

Hi,
ich habe letzte Tage mal hier geposted, weil ich aus einem Java-Applet aus Cookies benutzen will. Mir wurde dann der Tipp gegeben, dass dies mit der Klasse netscape.javascript.JSObject möglich ist. Jetzt habe ich aber folgendes Problem:

Wenn ich das ganze im Netscape (7.1) ausführte, dann geht es nicht, weil der Aufruf JSObject myBrowser = (JSObject) JSObject.getWindow(appl) ein leeres Objekt zurückliefert, obwohl in appl mein Applet steht. Im Internet Explorer geht’s dagegen problemlos!

Jemand eine Idee, wie ich es sonst machen könnte?

Ralph

P.S. Ich hätte mich ja nicht gewundert, wenns im IE nicht funktioniert, aber dass es im IE funzt und im Netscape nicht, ist schon seltsam…

Hi,
ich habe letzte Tage mal hier geposted, weil ich aus einem
Java-Applet aus Cookies benutzen will. Mir wurde dann der Tipp
gegeben, dass dies mit der Klasse
netscape.javascript.JSObject möglich ist.

javascript oder java ? Das sind zu paar Schuhe, entwickelt zu verschienden Zeiten von verschiedenen Firmen…

Wenn ich das ganze im Netscape (7.1) ausführte, dann geht es
nicht, weil der Aufruf JSObject myBrowser = (JSObject)
JSObject.getWindow(appl)
ein leeres Objekt zurückliefert,
obwohl in appl mein Applet steht. Im Internet Explorer geht’s
dagegen problemlos!

Im ist Netscape die aktuelle JVM von sun installiert, im IE nicht ?

cu

javascript oder java ? Das sind zu paar Schuhe, entwickelt zu
verschienden Zeiten von verschiedenen Firmen…

Java! Wenn ich Java schreibe und im Java-Brett poste und von Applets rede, dann wird es sich wohl um Java handeln. :smile: Wie in JavaScript Cookies gesetzt werden, ist ja nicht das Problem. Wenn du dir die Klasse genauer anschaust, dann wirst du feststellen, dass ich sogar beides benutze :wink: . Ich erzeuge mir im Java-Applet ein Objekt des Browserdokuments, an welches ich dann JavaScriptfunktionen zum Setzen und Lesen der Cookies gebe. Wie gesagt funktioniert es im Netscape 7.1 nicht.

Das Problem ist aber, dass es überall laufen soll (zumindest IE, netscape, mozilla, conqueror).

Also, jemand eine Idee, wie ich sonst Cookies ablegen kann oder wie ich das in der Ausgangsfrage geschilderte Objekt im Netscape bekomme?

Ralph

Hallo,

Jemand eine Idee, wie ich es sonst machen könnte?

Also um von Java aus eine JavaScript-Funktion aufzurufen, musst du grob skizziert folgendes machen:

HTML-Seite sollte so ähnlich aussehen:

 \<!--
 function meineFunktion(nachricht) {
 alert(nachricht);
 }
 --\>

Applet sollte etwa so ähnlich aussehen:

import java.applet.\*;
import netscape.javascript.\*;

public class MeinApplet extends Applet {

 public MeinApplet() {
 }

 public void init() {
 this.setSize(100,100);

 String[] parameter = new String[1];
 parameter[0] = "Hallo Welt\nJVM: " + System.getProperty("java.vendor") + " "
 + System.getProperty("java.version");
 rufeAuf(parameter);
 }

 private void rufeAuf(String[] parameter) {
 JSObject jso = JSObject.getWindow(this.getAppletContext().getApplet("MeinApplet"));
 jso.call("meineFunktion", parameter);
 }
}

Du musst jetzt noch die compilierte Klasse ins selbe Verzeichnis wie die HTML-Seite tun und die Netscape-JavaScript-Klassen müssen erreichbar sein.

Dann sollte beim Aufruf der HTML-Seite eine Dialogbox erscheinen, die „Hallo Welt“ sagt und dir den Hersteller und die Version der verwendeten Java VM ausgibt.

Funktionieren sollte das Applet mit jeder Java-VM ab 1.1.8, sogar mit der von Microsoft. Ansonsten hilft dann ein Blick in die Java-Konsole.

mfg
deconstruct

Hi,
leider geht es bei mir trotzdem im Netscape nicht:
Netscape: Java-Version: Sun Microsystems Inc. 1.4.1_02
Im IE gehts:
IE: Java-Version: Sun Microsystems Inc. 1.4.2

Mal abgesehen davon. Wozu nutzt du das this.getAppletContext().getApplet(„Name“). Das gibt nämlich bei mir null zurück, wohingegen this doch direkt das Applet liefert, mit dem es im IE wunderbar funzt…

Ralph

Hallo,

leider geht es bei mir trotzdem im Netscape nicht:
Netscape: Java-Version: Sun Microsystems Inc. 1.4.1_02
Im IE gehts:
IE: Java-Version: Sun Microsystems Inc. 1.4.2

Und was sagt die Java-Konsole?
Außerdem unterscheiden sich die Java-Versionen. Vielleicht ist die 1.4.1 bei dir defekt und es liegt gar nicht am Netscape. Stell doch mal diesselbe Runtime im Netscape ein, wie im IE.
Bei mir geht das Beispiel mit jedem Browser: Opera, IE, Netscape, Safari, Mozilla, Konqueror, Firefox.
Also ich bezweifle, dass es einfach so am Browser liegt.

Mal abgesehen davon. Wozu nutzt du das
this.getAppletContext().getApplet(„Name“). Das gibt
nämlich bei mir null zurück, wohingegen this doch direkt das
Applet liefert, mit dem es im IE wunderbar funzt…

Das mache ich, weil diese Funktion das auf der HTML-Seite gefundene Applet liefert, und nicht einfach nur „this“.
Damit kann ich schon mal ausschließen, dass es nicht gefunden wird und ich das nicht mitbekomme. Einfach nur mit „this“ kanns sehr leicht zu Problemen kommen, v.a. wenn man Frames verwendet. Und „this“ macht u.U. auch bei manchen Browsern Probleme. Wenn ichs über den Context hole, dann weiß ich sicher, dass der Browser mit der Java Runtime schön zusammenarbeitet.

mfg
deconstruct