Applet Aus anderer Browserinstanz Applet abfragen

Guten Morgen!
Inzwischen habe ich mein gewünschtes Java Applet zusammen, das ist ein Erinnerungstool für Termine. Nun aber folgendes Problem: Der Benutzer hat eine Instanz meiner Webseite offen, Applet läuft, alles ist gut. Nun öffnet der Benutzer im selben Browser eine zweite Instanz meiner Webseite, z.B. in neuem Tab. Jetzt startet das Applet völlig unabhängig ein zweites mal, ich habe nun also zwei Icons im Systray. Und so weiter, je Instanz ein Applet.

Nun suche ich eine Möglichkeit, erstmal abzufragen, ob das Applet schon aus einer anderen Instanz heraus gestartet wurde. Wenn es nämlich schon läuft möchte ich es entweder kein weiteres mal starten oder das Applet in der anderen Instanz erstmal schließen. Die Abfrage reicht innerhalb des selben Browsers. Wenn es eine browserübergreifende Abfrage gäbe wäre das natürlich die Goldlösung.

Das Applet wird derzeit so mit JS initialisiert:
HTML:
function generate_kalender_applet(data) {
	var app = document.createElement('object');
	app.type = 'application/x-java-applet';
	app.width = 0;
	app.height = 0;
	app.name = data['para']['appname'];

	var para = document.createElement('param');
	para.name = 'code';
	para.value = data['para']['code'];
	app.appendChild(para);

	para = document.createElement('param');
	para.name = 'archive';
	para.value = data['para']['archive'];
	app.appendChild(para);

	para = document.createElement('param');
	para.name = 'scriptable';
	para.value = 'true';
	app.appendChild(para);

	para = document.createElement('param');
	para.name = 'mayscript';
	para.value = 'true';
	app.appendChild(para);

	para = document.createElement('param');
	para.name = 'icon-url';
	para.value = data['para']['icon'];
	app.appendChild(para);

	para = document.createElement('param');
	para.name = 'tooltip';
	para.value = data['para']['tooltip'];
	app.appendChild(para);

	document.body.appendChild(app);
}

Das Vorhandensein des Applets frage ich derzeit mit JS so ab: [c]if (document.appletname.isActive()) {}[/c]

Mein Problem: Die Abfrage funktioniert natürlich nur, wenn es "appletname" im Dokument bereits gibt. Das funktioniert also schon mal nicht. Wenn ich dann aber das Node erzeuge, um "appletname" zu haben, ist es bereits ein weiteres mal gestartet, also zu spät für eine Abfrage, die bezieht sich dann nämlich auf das neu erzeugte Node.

Daher meine Frage: Wie kann ich per JS/HTML abfragen, ob vom selben Browser in einem anderen Tab oder Fenster das Applet bereits gestartet wurde?

Der junge Mann, der mir das Applet programmiert hat verweist mich auf Javascript, er könne das im Applet selbst nicht lösen. Ich selbst beschäftige mich mit Java möglichst garnicht 😀 Und für Javascript weiß ich im Moment nicht, wie ich auf etwas abfragen soll, was es in dieser Instanz noch garnicht gibt.

Jemand eine Idee dazu? Wäre sehr dankbar. Würde mich auch erkenntlich zeigen, wenn es aufwendiger wird.
Vielen Dank fürs lesen
 
klare antwort : gar nicht

javascript läuft genau wie java in einer sandbox ... dem "document"
so lange du also nur auf basis "document" arbeitest ... arbeitest du immer nur im gerade aktuellen tab ...

man müsste also an das parent-objekt von "document" kommen ... was so aber eine verletzung der sandbox wäre und daher nicht möglich ist ...

und in einem frameset funktioniert es dann auch nur in dem sinne das von einem frame dann das objekt des framesets angesprochen wird ... aber nicht wirklich der browser bzw dessen control-instanz selbst

darum geht sowas auch nicht in java ... da dessen sandbox noch eingeschränkter ist und es schon schwer genug ist überhaupt aus dem applet mit dem umgebenen javascript-code zu kommunizieren ...



so lange du also nicht irgendeine zero-day-lücke findest die es dir erlaubt aus der sandbox auszubrechen ... und dann in eine andere sandbox aus einem anderen tab wieder einzubrechen und dort code auszuführen ... geschweige denn von dort eine antwort zu erhalten ... so lange bleibt die antwort : GEHT NICHT !
 
OK, danke dir. Dann weiß ich jetzt wenigstens, dass ich nichts übersehen habe. Muss ich mal schauen, ob ich mir da ein Flag in einem Cookie oder LocalStorage setze.
 

Zurück
Oben