jürgen: document.applets

Guten Tag liebe Forumgemeinde,

ich habe ein Java-Applet, HTML und JavaScript.

Nun möchte ich aus dem Applet einen String,Text in ein Formular mittels JavaScript einfügen.
Wie das funktioniert ist mir klar, es funktioniert auch, ABER bisher nicht mit Text sondern nur int,short,long.

Wenn ich folgendes versuchen funktioniert es:

Java:
...
public int var1 = 5;
..

Java-Script:
...
document.text.value = document.applets[0].var1;
...

Schreibe ich aber in Java folgendes, funktioniert es nicht.
...
public String var1 = new String("string");
...

Ist ja auch klar weil String eine Java-klasse ist und mit der kann JavaScript nichts anfangen?! Aber ich erhalte immer die Meldung das diese Variable nicht existiert. Wie ist das zu erklären?

...
if(!document.applets[0].var1) {
 document.text.value = "undefined";
 return; // function
}
...

Also meine Frage ist nun wie ich meinen String,Text an JavaScript übergeben kann.

Ich hoffe mir kann jemand helfen.

Gruß jürgen

  1. Hallo Jürgen,

    Java-Script:
    ...
    document.text.value = document.applets[0].var1;

    rufe eine Methode des Applets auf, also document.applets[0].getMethode();

    *.java:

    public class ... extends Applet  
      {  
      public String getMethode()  
        {  
        String var1 = new String("string");  
        return var1; 
    

    HTH

    Jochen

    --
    Kritzeln statt texten:
    Scribbleboard
    1. Hallo Jürgen,

      Java-Script:
      ...
      document.text.value = document.applets[0].var1;

      rufe eine Methode des Applets auf, also document.applets[0].getMethode();

      *.java:

      public class ... extends Applet

      {
        public String getMethode()
          {
          String var1 = new String("string");
          return var1;

      
      >   
      > HTH  
      >   
      > Jochen  
      >   
        
      Habe ich auch schon probiert.  
      Bei mir findet er die Methode nicht.  
      Aber ich probiere es jetzt noch einmal vielleicht funktioniert es ja jetzt, wer weiss.  
      Trotzdem Vielen Dank Jochen.
      
      1. Aber ich probiere es jetzt noch einmal vielleicht funktioniert es ja jetzt, wer weiss.

        Also ich habe es jetzt noch einmal probiert und dabei festgestellt das es im IE (6) funktioniert aber in einem richtigen Browser Opera,Firefox,SeaMonkey,usw. funktioniert es dagegen nicht
        'undefined' function.

        Wie kann ich das Browserübergreifend gestalten?

        1. Hi Jürgen,

          Also ich habe es jetzt noch einmal probiert und dabei festgestellt das es im IE (6) funktioniert aber in einem richtigen Browser Opera,Firefox,SeaMonkey,usw. funktioniert es dagegen nicht
          'undefined' function.

          dazu müsste ich mehr von deinem java-, javascriptcode kennen.
          Hast du etwas online, oder kannst zumindest die wesentlichen Teile *.java und *.html hier posten?

          Wie kann ich das Browserübergreifend gestalten?

          Eigentlich genau so. Das Applet auf meiner Seite funktioniert nach dem gleichen Prinzip.

          Grüße,

          Jochen

          --
          Kritzeln statt texten:
          Scribbleboard
          1. Hi Jürgen,

            Also ich habe es jetzt noch einmal probiert und dabei festgestellt das es im IE (6) funktioniert aber in einem richtigen Browser Opera,Firefox,SeaMonkey,usw. funktioniert es dagegen nicht
            'undefined' function.

            dazu müsste ich mehr von deinem java-, javascriptcode kennen.
            Hast du etwas online, oder kannst zumindest die wesentlichen Teile *.java und *.html hier posten?

            Wie kann ich das Browserübergreifend gestalten?

            Eigentlich genau so. Das Applet auf meiner Seite funktioniert nach dem gleichen Prinzip.

            Wiso funktioniert es dann bei mir nicht?

            also ich poste hier mal die wesentliche funktion von meinem Applet
            komplett posten wäre unsinnig (1200 Zeilen in der "komprimierten" version). Online geht zur Zeit nicht sorry.

              
            public String parseOut() {  
               String result = new String("");  
               String lastColor = new String("");  
               boolean lastBold = false, lastItalic = false, lastUnderline = false;  
               listElement curElem = null; /* Das Listen-Element, die Liste besteht aus 2 Klassen einmal die Hauptklasse die, die Liste verwaltet und einer Klasse die einen Knoten,die Daten darstellt */  
               for(int i = 0; i < TextArray.Num; i++) {  
            /* TextArray ist meine Liste, der Name ist unpassend aber ich habe ihn noch nicht geändert und der Compiler hat sich auch noch nicht beschwert ;) */  
                curElem = TextArray.getElement(i);  
                if(curElem == null) { break; } /* sollte nicht vorkommen, ist nur zur sicherheit, Wenn die TextArray.Num nicht stimmt gelangt er möglicher weise bis übers Ende hinaus dort wird dann null zurückgegeben*/  
                if(lastBold) { /* Diese Konstruktionen basieren auf der Tatsache das ein voriges Zeichen anders als das jetzige formatiert ist, ich finde das diese Idee nicht schlecht ist auch weil sie sehr zuverlässig arbeitet */  
                 if(!curElem.getBold()) {  
                  result += "[/b]";  
                  lastBold = false;  
                 }  
                } else {  
                 if(curElem.getBold()) {  
                  result += "[b]";  
                  lastBold = true;  
                 }  
                }  
              
                if(lastItalic) {  
                 if(!curElem.getItalic()) {  
                  result += "[/i]";  
                  lastItalic = false;  
                 }  
                } else {  
                 if(curElem.getItalic()) {  
                  result += "[i]";  
                  lastItalic = true;  
                 }  
                }  
              
                if(lastUnderline) {  
                 if(!curElem.getUnderline()) {  
                  result += "[/u]";  
                  lastUnderline = false;  
                 }  
                } else {  
                 if(curElem.getUnderline()) {  
                  result += "[u]";  
                  lastUnderline = true;  
                 }  
                }  
              
                if(lastColor == "") { // 'übersetzt' die Farben  
                 if(curElem.getColor() != "") {  
                  if(curElem.getColor().equals("Rot")) {  
                   result += "[color=#FF0000]";  
                  } else if(curElem.getColor().equals("Grün")) {  
                   result += "[color=#00FF00]";  
                  } else if(curElem.getColor().equals("Blau")) {  
                   result += "[color=#0000FF]";  
                  } else if(curElem.getColor().equals("Gelb")) {  
                   result += "[color=#FFFF00]";  
                  } else if(curElem.getColor().equals("Weiss")) {  
                   result += "[color=#FFFFFF]";  
                  } else if(curElem.getColor().equals("Schwarz")) {  
                   result += "[color=#000000]";  
                  } else if(curElem.getColor().equals("Lila")) {  
                   result += "[color=#FF00FF]";  
                  } else if(curElem.getColor().equals("Grau")) {  
                   result += "[color=#C4C4C4]";  
                  } else if(curElem.getColor().equals("Cyan")) {  
                   result += "[color=#00FFFF]";  
                  } else if(curElem.getColor().equals("Braun")) {  
                   result += "[color=#A52A2A]";  
                  } else if(curElem.getColor().equals("Orange")) {  
                   result += "[color=#FFA500]";  
                  } else if(curElem.getColor().equals("Rosa")) {  
                   result += "[color=#FF69B4]";  
                  } else {  
                   result += "[color=#000000]";  
                  }  
                 }  
                } else {  
                 if(curElem.getColor() == "") {  
                  result += "[/color]";  
                 }  
                }  
              
                if(curElem.getChar() == '\n') { // LF \n ascii 13 benutze ich als trennzeichen für die Zeilen, eignet sich hier sehr gut, weil es dafür gedacht ist und es in ein char passt  
                 result += "[br]";  
                } else {  
                 result += String.valueOf(curElem.getChar());  
                }  
               }  
               return result; /* Das bekommt Java-Script speichert es ins <textarea> der Alternativen Methode und gelangt so an PHP und schließlich in die Datenbank */  
              }  
            
            

            Kurz was diese Funktion macht:
            Sie bastelt aus einer einfach verketteten Liste einen Text der mit [] code-tags formatiert wird.
            Das Applet ist ein kleiner(klein ist relativ) Editor der es erlaubt einen Text so zu schreiben und formatieren wie er letztendlich auf der Seite auch aussehen wird.
            Also es sind dann keine [] Tags beim schreiben mehr zu beachten.
            Wenn jemand kein Java hat oder es deaktiviert hat, bekommt er nur die "alte" Methode zu Gesicht.

            Die gleiche Funktion gibt es auch umgedreht die einen String parst und ihn in die Liste packt. Wenn es nötig ist kann ich die ja auch posten.

            Der Editor funktioniert soweit sehr gut.
            Jetzt muss ich eben nur noch die Funktionalität einbauen das ich von der Datenbank -> nach HTML,JavaScript -> ins Applet komme und umgedreht. Eben was die 2 Funtkionen im Applet erledigen.

            Stellt sich eben nur die Frage des Wie?

            Gruß j&uuml;rgen
            (Ich sollte mal meinen Namen richtigschreiben aber irgendwie fällt es mir schwer mir diese Schreibweise abzugewöhnen.)

            1. obige Funktion hat einen Fehler.
              sie setzt lastColor in der for-Schleife nicht!

              1. Ich wollte nur mitteilen dass ich es jetzt Browserübergreifend hinbekommen habe.

                Vielen Dank Jochen.

        2. Hallo Jürgen,

          Wie kann ich das Browserübergreifend gestalten?

          verwende statt: document.applets[0].getMethode();

          ID oder name des applets. Also
             <applet  name="foo"
             document.foo.getMethode()

          Grüße,

          Jochen

          --
          Kritzeln statt texten:
          Scribbleboard
          1. Hallo Jürgen,

            Wie kann ich das Browserübergreifend gestalten?

            verwende statt: document.applets[0].getMethode();

            ID oder name des applets. Also
               <applet  name="foo"
               document.foo.getMethode()

            Grüße,

            Jochen

            Ich probiere es mal.

            Gruß jürgen
            (es klappt wenn man sich dazu zwingt ;))