Ulf: JS Seite in Frame erstellen

Hi,

folgendes Problem: Ich habe ein Frameset mit zwei Frames: linkes = Navigation, rechtes = Ausgabe. Wähle ich nun einen Link wird die dazugehörige Seite in das Ausgabeframe geladen. In dieser Seite werden mehrere Optionsangaben mittels JS verrechnet. Durch anklicken des "Ausgabe" Buttons, wird das Ergebnis in das Ausgabeframe mittels JS geschrieben. Also eine neue HTML Datei. Die Ausgabe habe ich mit parent.frame[1].document.write("" + "< HTML >" usw.) notiert. Das funktioniert auch alles.
Wenn ich nun einen anderen Link im Nav.frame wähle, wird die dazugehörige Seite NICHT in das Ausgabeframe geladen, sondern es wird ein neues Fenster geöffnet. Ist es nun richtig, daß durch document.write das aktuelle Frameset gelöscht bzw. überschrieben wird ? und so der Browser gezwungen ist ein neues Fenster zu öffnen ? Wenn ja, wie kann ich es erzwingen, daß die neue HTML Seite mittels JS in das entsprechende Frame geschrieben wird, ohne daß mein Frameset gelöscht wird ? Habe schon vergeblich in den SELFHTML Seiten geblättert und würde mich über eine Lösung riesig freuen.

Danke
Ulf

  1. Hi Ulf,

    hhmmm...so richtig mit Sicherheit kann ich nichts dazu sagen, aber ne Vermutung/Idee hab ich - vielleicht hilft die ja was.
    Also: ich gehe davon, dass Du Deinen Frames im Frameset Namen zugewiesen hast, und die Links mit Target darauf zielen.
    Das von Dir beschriebene Verhalten ist mir nur dann bekannt, wenn kein Frame bzw. Fenster mit dem im Target genannten Namen vorhanden ist. Daher vermute ich, dass durch Deine document.write-Aktion der Framename verloren geht. Testmöglichkeit: Schreib in Dein erstelltes HTML ne JavaScript-Alertbox rein, die den Namen dieses Frames ausgibt (müsste in dem Fall parent.frame[1].name o.s.ä. sein - lieber nochmal in SelfHTML schauen). Gibt diese Alertbox _nicht_ den Namen aus, den Du im Frameset zugewiesen hast, dann stimmt meine Vermutung.
    Wenn das so ist, musst Du innerhalb des document.write dem Frame via JavaScript erneut den Namen vergeben.

    Grüße,

    Utz

    1. Moin,moin Utz,

      habe meine Seiten umgeschrieben, so daß meine entsprechenden Variablen aus der ersten Seite in die Nächste Seite transferriert werden. Die zweite Seite wird nun nicht durch JS aufgebaut, sondern direkt geladen. Ich habe das dazugehörige Script in der Forumsauslese gefunden und leicht modifiziert. So ist es nu einfacher. Muß nur noch einen Weg finden, daß die Ausgabe der Variablen in der zweiten Seite vom Stil her anders erfolgen. Laut dem Script aus dem Archiv wird die Ausgabe so notiert:

      <HTML>..blablabla
      <Form>
      Der Kontrollwert hat den Wert<input type="text" name="Ausgabe2">
      </FORM>

      </HTML>

      Dadurch wird leider ein Textfeld erstellt, welches mein Design zu schrott macht. Besteht eine Möglichkeit, direkt durch HTML die Ausgabe des Wertes ohne ein Textfeld zu erstellen ? Oder mittels CSS das Design ändern ?

      Ulf

      1. Hi Ulf,

        nur mal so als idee auf die schnelle:

        <HTML>..blablabla
        <Form name="formular">
        Der Kontrollwert hat den Wert <input type="hidden" name="Ausgabe2"><script>document.write(document.formular.Ausgabe2.value);</script>
        </FORM>

        das document.write das in seinen eigenen body-Bereich steht und dort reinschreibt hat die unangenehmen Nebenwirkung (Verlust
        des Fensternames, der Hintergrundfarbe   ...) nicht.

        1. Hi Ulf,

          nur mal so als idee auf die schnelle:

          <HTML>..blablabla
          <Form name="formular">
          Der Kontrollwert hat den Wert <input type="hidden" name="Ausgabe2"><script>document.write(document.formular.Ausgabe2.value);</script>
          </FORM>

          das document.write das in seinen eigenen body-Bereich steht und dort reinschreibt hat die unangenehmen Nebenwirkung (Verlust
          des Fensternames, der Hintergrundfarbe   ...) nicht.

          Hi Carsten,

          OK.
          1. Habe mein JS aus dem HEAD Bereich herausgenommen und in den BODY Bereich eingefügt. So sollte nun das erstellen der Site mittels document.write("" usw.) im Frame "Ausgabe" erfolgen ! Tut es auch, wie vorher auch schon. Nur habe ich immer noch das Problem, daß bei der Wahl eines anderen Links im Navigationsframe, die dazugehörige Seite immer noch NICHT in das "Ausgabe" Frame geladen wird, sondern der Browser lädt ein neues Fenster !!! Problembeschreibung siehe erste Nachricht von mir. Also scheint die Aussage nicht zu stimmen, daß wenn das document.write in seinen eigenen BODY geschrieben wird, die Fensternamen usw. nicht löscht. Oder habe ich das falsch verstanden ?

          2. Meine zweite Variante (2 Posting von mir) funktioniert besser und schneller. Die Ausgabe der Variablen erfolgt richtig im BODY Bereich mit : Der Kontrollwert ergab den Wert<input type="text" name="Ausgabe2"> , wobei "Ausgabe2" eine per JS definierte varibale ist, welche von der vorherigen Seite in die neue übergeben wurde.
          Alles klar ? ;-))
          Nur habe ich jetz stilistische Probleme. Durch das <input type="text"> wird ein Textarea gebildet, welche unschön aussieht. Ich möchte erreichen, daß die Ausgabevariable sich direkt an den Text anschließt. Ersetze ich das <input..> durch <script>document.write(document.Formular.Ausgabe2.value</script>, sehe ich keinen Ausgabetext ! habe ich nun hier Gedankenprobleme oder ist es richtig und ich habe im Script für die Übernahme der variablen etwas falsch gemacht ?
          Wenns überhaupt nicht mehr geht, poste ich gerne die URL.

          Man, mir raucht der Kopf und ich sehe den Wald vor lauter Bäumen nicht mehr. :-(

          Für Antwort vielen Dank.
          Ulf

          1. Hi Ulf,

            sorry wegen 1, da hab ich mich wohl unklar ausgedrückt, ich meinte folgendes:
            wenn du statt
            <body>Hallo</body>
            folgendes schreibst
            <body><script>document.write("Hallo");</script></body>
            dann versaut es dir den Fensternamen(...) nicht.

            Letzlich meinte ich das, was du unter 2. probiert hast:
            Statt die Variable im Textfeld zu setzten (HTML) gibst du sie mit document.write (JavaScript) aus.
            Das sollte eigentlich gehen, es liest sich so, als ob du es dir richtig vorgestellt hast.
            Probier doch mal beides in einer Datei:

            <html>
            <Form name="formular">
            Der Kontrollwert hat den Wert<input type="text" name="Ausgabe2">
            </FORM>

            <br> und jetzt im richtigen Design :
            <script>document.write(document.formular.Ausgabe2.value);</script>
            </html>

            url wäre sicher Hilfreich, grade wenn der Wald so von den Bäumen verdeckt wird, sieht man die
            einfachsten Sachen nicht mehr.

            Gruss,
            Carsten

  2. Hi,

    folgendes Problem: Wie kann ich verhindern daß beim Ausdruck

    meiner Webseiten der reale Pfad angezeigt wird (z.B. bei T-Online /home/....)

    Danke
    Olaf