stephan sievers: Word-Dokument im Frame "schliessen"

Tach Leute,

vorweg: Ich poste heute zum ersten Mal. Seit vielen Monden hat SELFHTML, Forum, etc. diverse Male (m)einen Nervenzusammenbruch erfolgreich verhindert - danke dafür. Zu meinen aktuellen Problem hab' ich nun auch schon stundenlang gelesen - viel gelernt - aber leider nix brauchbares gefunden - dabei ist das Problem wohl eher (zu?) trivial und schon 1000mal... naja ihr wisst schon. Also vereinfacht:

Ich hab' zwei frames und ändere den Inhalt des rechten Frames, indem im linken ein JavaScript mit der Zeile:
parent.rechterFrame.document.location =
'/cgi-bin/trallala.exe?action=edit&currentFrame=...'
abläuft. Der output des CGI-Scripts wird artig in den rechten Frame geschrieben (IE4) solange dort ein html-Dokument weilt. Habe ich dort ein Word/Excel oder sonstwas geöffnet, bekomme ich eine Fehlermeldung: parent.rechterFrame.document.location sei kein Objekt.

Wie schliesse ich mit einem JavaScript das "Word"-Dokument im rechten Frame und ersetzte es durch die Ausgabe meines CGI-Scripts?

Danke schonmal
Siggi

  1. Hallo Siggi,

    Ich hab' zwei frames und ändere den Inhalt des rechten Frames, indem im linken ein JavaScript mit der Zeile:
    parent.rechterFrame.document.location =
    '/cgi-bin/trallala.exe?action=edit¤tFrame=...'
    abläuft. Der output des CGI-Scripts wird artig in den rechten Frame geschrieben (IE4) solange dort ein html-Dokument weilt. Habe ich dort ein Word/Excel oder sonstwas geöffnet, bekomme ich eine Fehlermeldung: parent.rechterFrame.document.location sei kein Objekt.

    vielleicht habe ich etwas falsch verstanden, aber warum verwendest Du
    für diesen Link überhaupt JavaScript?
    Hast Du es schonmal mit <a href="link.html" target="rechts">link</a>
    probiert?

    Viele Grüße aus Dresden,
    Stefan Einspender

    1. Hallo Stefan,

      vielleicht habe ich etwas falsch verstanden, aber warum verwendest Du
      für diesen Link überhaupt JavaScript?
      Hast Du es schonmal mit <a href="link.html" target="rechts">link</a>
      probiert?

      Na ja ich hab' etwas vereinfacht, das JavaScript liest noch ein paar Felder aus und üebrmittelt den Namen/URL eines weiteren frames (sind eigentlich vier und nicht zwei) usw. an das cgi-Programm.
      Ich drücke also einen Knopf und das JavaScript sammelt noch ein paar Infos ein und füttert damit das Programm, dessen output den rechten Frame erzeugt. Also z.B.
      '/cgi-bin/trallala.exe?action=edit?Frame='+parent.FrameOben.document.location+'?Para1='+parent.untenFrame.forms[0].value+'...
      Da viel mir nix anderes ein, als JavaScript.

      Siggi

      (P.S. Diese ¤ ist eigentlich ein Fragezeichen... ;) )

      1. Hallo Siggi,

        [ ... ]

        in dem ersten Posting schreibst Du ja, dass es funktioniert, wenn Du
        normale HTML-Seiten im rechten Frame hast, also kann man durch Word
        diesen Frame nicht mehr per JS ansprechen, wie es ausschaut.
        Ein (unsaubere) Lösung gibt es aber:
        Du lädst bei Word-Dokumenten, welche im rechten Frame geöffnet wer-
        den sollen, einfach ein zusätzliches Frameset, da Du eh mit JS ar-
        beitest, könnte es wie folgt ausschauen:

        <a href="word.html?wichtig.doc" target="rechts">Word-Doc</a>

        Dann schreibst Du einfach wichtig.doc als Variable in das Frameset,
        welches (danach) so aufgebaut ist:

        ...
        <frameset rows="100%,*" border="0">
            <frame src="wichtig.doc">
            <frame src="leer.html">
          </frameset>

        Hoffentlich ist es jetzt einigermassen vernünftig erklärt, natürlich
        kann man es auch noch abwandeln, aber der rechte Frame sollte danach
        noch ansprechbar sein.

        Viele Grüße aus Dresden,
        Stefan Einspender

        1. <frameset rows="100%,*" border="0">
              <frame src="wichtig.doc">
              <frame src="leer.html">
            </frameset>

          Das CGI-Script erscheint dann in leer.html - aber auch nicht wirklich, denn leer.html ist nicht zu sehen. Ich krieg das word wohl nur weg, wenn ich ein ganzes Frameset aus der CGI-Schnittstelle schiebe und mir, mir dann nochmal alles ausslese und über ein refresh das CGI-script anschubse oder so.
          Oder ich muss für jedes Dokument immer einen iframe mitbasteln/erstellen lassen, denn ein Word-Doc im iframe einer html-Datei ist dann auch wieder als html-Datei ansprechbar...
          Ich dachte man käme dem irgendwie über objects oder so bei - trotzdem danke!
          Gruss
          Siggi

          1. Hallo Siggi,

            nur damit wir uns nicht falsch verstehen, hier einige Beispiele mit
            kurer Erklärung:

            So sieht Dein Frameset die ganze Zeit aus, auf der linken Seiten der
            "frame_links", von wo Du das CGI startest, welches dann auf der and.
            Seiten im "frame_rechts" ausgeführt wird.
            _____________________________
                                        
                                        
                                        
              n                         
              a         inhalt          
              v                         
              i                         
                                        
                                        
            ____________________________

            ======================================================================

            Jetzt willst Du ein Word-Dokument öffnen, also ruftst Du den folg.
            Link auf <a href="word.html?bsp.doc" target="frame_rechts">link</a>.
            In word.html wird ein neues Frameset definiert, was jedoch nur den
            inhaltsbereich (s.o.) ausfüllt, dabei wird ein bleibt der obere Frame
            leer und unten wird das Word-Dokument geöffnet, welches als Variable
            mit übergeben wurde. Damit brauchst Du _nicht_ für jedes Word-doc
            extra eine neue Framesetdefinition schreiben, sondern nur die eine,
            wo der Parameter hinter word.html?blabla.doc verarbeitet wird.

            Deine Seite besteht jetzt aus dem ursprünglichen Frameset und einem
            neuen Frameset, welches in "frame_rechts" geöffnet/erzeugt wurde.
            _____________________________
                                        
                          leer          
                  ______________________
              n                         
              a                         
              v                         
              i            doc          
                                        
                                        
            ____________________________

            Jetzt läßt sich aus "frame_links" _nicht_ mehr ein Ziel in dem Nach-
            barframe ("frame_rechts") öffnen???
            (D.h. mit Deiner JS-Variante, siehe Dein erstes Posting)

            ======================================================================

            Die Variante ist ähnlich, nur dass ein Frameset erzeugt wird, was aus
            einem Iframe besteht, ebenfalls wird der Name des anzuzeigenden Word-
            Dokumentes als Parameter übergeben, d.h. nach word.html?123.doc
            wird word.html geöffnet und per JS <iframe src="123.doc> geschrieben.
            _____________________________
                    __________________  
                                     
                                     
                                     
                                     
                          doc        
                                     
                                     
                   __________________
            ____________________________

            Läßt sich bei dieser Variante "frame_rechts" noch über die JS-Links
            aus dem linken Frame ansprechen?

            Ich würde mich freuen, wenn Du mir die beiden Fragen beantwortest,
            wenn es bei beiden nicht geht, dann sehe ich da auch keinen anderen
            Weg, als statische HTML-Seiten mit Framesets für _jedes_ einzelne
            Word-Dokument zu verwenden :-(

            Viele Grüße aus Dresden,
            Stefan Einspender