Word-Dokument im Frame "schliessen"
stephan sievers
- javascript
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¤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.
Wie schliesse ich mit einem JavaScript das "Word"-Dokument im rechten Frame und ersetzte es durch die Ausgabe meines CGI-Scripts?
Danke schonmal
Siggi
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
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... ;) )
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
<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
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