# javascript-applet-html-javascript-applet



## Dilandau (26. Mrz 2004)

Zunächstmal soll das Applet mit eingaben aus einem html <FORM> versorgt werden, wahrscheinlich nur oder am besten über Javascript möglich. Dann soll aber das Applet irgendwie ein neues HTML-Fenster öffnen (menü), das wieder ein <FORM> beinhaltet, von dem aus das aufrufende Applet, das ja schon im alten Fernster löppt, ferngesteuert werden soll. Geht das? Muss ich da irgendwas besonders berücksichtigen im Unterschied zu normalem Javascript-zu-Applet, das auf ein und der selben Seite läuft? Zb Fenstername, url oder sowas?

Oder das ursprüngliche Formular soll das Applet in neuem Fenster öffnen, währned das Applet aber im Hintergrund bereits mit der aufrufenden Seite geladen wurde! Ist das machbar?

Ich habe da hier  http://www.ges-training.de/Expertentips/Internet,HTML,Java/Java_JavaScript/J3.html

etwas gefunden, aber funzt das auch im Explorer und auf dem Mac? Und was ist, kann das überhaupt sein, wenn mehrere Instanzen des selben Applets laufen? Zb über mehrere <Applet> tags auf einer seite? Wie weis dann das js, welches applet angesprochen werden soll? kann ich <applet name="nummer5" ...> machen und mit dem js das applet nummer 5 ansprechen?


----------



## Thanni (26. Mrz 2004)

Dilandau hat gesagt.:
			
		

> Zunächstmal soll das Applet mit eingaben aus einem html <FORM> versorgt werden, wahrscheinlich nur oder am besten über Javascript möglich.



Warum machst du die eingaben nicht im applet? willst du die eingabe textboxen variabel halten ?
achja alle formular elemente wie buttons textboxen usw brauchen nicht unbedingt ein formular es sei denn du willst mit der post methode daten an ein neues formular weitergeben

am besten beschreib mal ganz genau wie das ablaufen soll damit ich mir das besser vorstellen kann den anfang vor allem sont würde ich auf die idee kommen das das applet die daten selber ausliest und nicht beliefert wird
wenn du doch liefern willst musst du im applet eine methode einbauen die die daten entgegennimmt und mit javascript rufst du dann die methode von dem applet auf und bergibst die werte



> Dann soll aber das Applet irgendwie ein neues HTML-Fenster öffnen (menü),




du willst im applet eine menüleiste die einneues fenster öffnet ? 
geht sicher



> das wieder ein <FORM> beinhaltet, von dem aus das aufrufende Applet, das ja schon im alten Fernster löppt, ferngesteuert werden soll.



inwieweit ferngesteuert?? meinst du das neue applet soll methoden vom alten benutzen können ? geht auch
du musst nur dafür sorgen das sich die applets kennen da du durch das öffnen der neuen html seite ja das window.document ... bekommen solltest bekommt man sicher auch hin das sich die applets finden



> Geht das? Muss ich da irgendwas besonders berücksichtigen im Unterschied zu normalem Javascript-zu-Applet, das auf ein und der selben Seite läuft? Zb Fenstername, url oder sowas?



wie gesagt die müssen sich erstmal gegenseitig kennen dann geht alles genauso wie wenns auf einer seite ist



> Oder das ursprüngliche Formular soll das Applet in neuem Fenster öffnen, währned das Applet aber im Hintergrund bereits mit der aufrufenden Seite geladen wurde! Ist das machbar?



??? weiss nicht



> Ich habe da hier  http://www.ges-training.de/Expertentips/Internet,HTML,Java/Java_JavaScript/J3.html
> 
> etwas gefunden, aber funzt das auch im Explorer und auf dem Mac?



du musst zu allererst erstmal die plugin.jar datein ins projekt einbinden da ist das liveconnect drin
die datei befindet sich bei mir in
Programme\j2sdk_nb\j2sdk1.4.2\jre\lib\plugin.jar
guck mal ob du die auch hast wennnicht mussu dir besorgen

dann im programm
import netscape.javascript.*;
import netscape.javascript.JSObject.*;
im html musst du bei den aplets beachten das das mayscript drinsteht
        <APPLET name="..." code=".class" width=20 height=20 MAYSCRIPT>
        </APPLET>

vom applet aus kannste dann so vor gehen um auf elemente der html seite zu zugreifen
hier ein kleines beispiel mit frames bei mir 

```
JSObject window= JSObject.getWindow(this);
        JSObject parent= (JSObject)window.getMember("top"); //top ist kein name das gehört zum dom von javascript
        JSObject mainFrame=(JSObject)parent.getMember("mainFrame");  //mainframe ist ein name
        JSObject document=(JSObject)mainFrame.getMember("document");  //dom
        JSObject applets=(JSObject)document.getMember("applets");        //dom
```

von javascript aus kannst du auf das applet so zugreifen

document.appletname.methodevomjavaapplet
oder ich glaube auch
document.applets.applet[0].methode 
(weiss jetzt nicht was groß geschireben wird musst du mal unter dom  suchen oder die mal selfhtml angucken)


es funzt wenn du das java sunplugin benutzt das ist ja das gleiche für explorer und netzscape mozilla ....
mac weis ich nicht denke aber schon
das liveconnect klappt nur nicht immer ich benutze modzilla und explorer da gibt es einige kleine unterschiede die mir aufgefallen sind  das liveconnect für den explorer nutzt  intern halt das windowsübliche com also ocx aber das fällt einem nur auf wenn man dann die classennamen debuggt
und mozilla nutzt was anderes modzilla ist bei mir mit liveconnect langsamer als der explorer



> Und was ist, kann das überhaupt sein, wenn mehrere Instanzen des selben Applets laufen? Zb über mehrere <Applet> tags auf einer seite? Wie weis dann das js, welches applet angesprochen werden soll? kann ich <applet name="nummer5" ...> machen und mit dem js das applet nummer 5 ansprechen?



ja geht alles 


hoffe das war jetzt nicht zu verwirrend am besten du stellst kleine fragen  wenn du etwas genauer wissen willst


gruß thanni


----------



## Dilandau (26. Mrz 2004)

Vielen dank und es ist noch nicht entschieden, welche variante genau implementiert wird. Ich will erstmal nur sehen, welche Möglichkeiten ich habe. Das fertige Programm werde ich wahrscheinlich sowieso hier vorstellen. Dieses forum hat schon sehr viel genutzt und warum solle s nicht die früchte sehen. Bei der benutzung von swing o.ä., eingabemasken aus jave hätte ich bedenken wegen der kompatibilität. ich kenen nur zu viele applets, die auf webseiten auftauchen, die eingabemasken haben, die nichts bewirken. im besten fall hängt sich der browser auf. außerdem kann mein applet sich selbst laden (u.u. muss sogar Java erst gestartet werden), wärend die javascript masken schon zur eingabe zur verfügung stehen. änlich wie bei map24.

Applet unsichtbar laden könnte über einen trick realisiert werden: appletgröße aus html auf 10*10 pixel an eienr freien stelle der seite festlegen, vielleicht sogar mit tricks verstecken und das applet sich selbst bei dieser größe in einen blödi-nixtu-modus schalten lassen, das ausgabefenster öffnet sich auf html-knopfdruck mit einer 200x200 pixel großen instanzt des apllets in einem neuen fenster sofort, da es jetzt schon im speicher ist usw...

...das ist natürlich teilweise nur ratsam, wenn genug transfervolumen zur verfügung steht. für den einzelnen surfer wenig aber für den anbieter, ich meine, wenn da jeder der vorbei kommt das ganze applet mit allem drum und dran geladen bekommen, blos weil da mal die seite kurz angetippt wird. bei zu viel traffic würde ich das applet erst dann laden, wenns wirklichv erlangt wird aber bis das mal soweit ist, wenn überhaupt jemals, darf getrickst werden.


----------

