Christoph Schnauß: iFrame lädt externe HTML-Datei nicht

guten Abend Forum,

beim Herumbasteln bin ich auf ein sehr eigentümliches Problem gestoßen  -  in einen iFrame kann das gewünschte HTML-Dokument nicht eingelesen werden. Folgende Konstruktion:

Ich habe ein Verzeichnis URL/daten
und ein Verzeichnis      URL/scrips
Im Verzeichnis /URL/daten liegt ein HTML-Dokument "datei1.htm", in das mit Javascript und CSS eine Menüführung eingebunden wird. Beides, sowohl die Javascript-Bereiche wie auch die CSS, ist komplett in externen Dateien notiert und wird vom Verzeichnis URL/scripts aus eingebunden, das heißt, im Verzeichnis URL/scripts liegen also meine "menu.js" und meine "menu.css". Das funktioniert völlig reibungslos  -  bis auf die iFrame-Definition.
In "menu.js" wird mein Menü dynamisch erzeugt, aber unterhalb der Menüleiste soll dann das jeweils benötigte HTML-Dokument mit

function init() {
...
document.write('<div ID="layer1">');
document.write('<iframe src="datei2.htm" width="100%" height="100%"></iframe>');
document.write('</div>');
...
}

in den DIV-Bereich eingelesen werden. Die init-Funktion wird also von "datei1.htm" aus aufgerufen, und im selben Verzeichnis wie "datei1.htm" liegt auch "datei2.htm". Wenn ich für den iFrame keine externe Quelle einlese, sondern irgendwas hineinschreibe, wird es angezeigt, das heißt, der iFrame wird angesprochen und dargestellt. Aber egal, in welches Verzeichnis ich nun "datei2.htm" lege, sie wird mir einfach nicht angezeigt, kann nicht gefunden werden. Sobald ich den Javscript-Code nicht auslagere, sondern im Headerbereich von "datei1.htm" notiere und auf das "document.write" verzichte, klappt alles wunderbar ... Genau das will ich aber nicht, da meine JS-Datei von sehr vielen HTML-Dokumenten eingebunden werden soll und die in den iFrame geladenen Dateien unterschiedlich sein können. Weiß jemand, wie ich das verflixte Ding anzeigen lassen kann, ohne meine "Scriptauslagerung" aufzugeben ?

Oder gibt es einen anderen Weg, in einen <div></div>-Bereich ein komplettes HTML-Dokument einzulesen, wenn ich weder über SSI noch PERL u.a. verfüge, sondern lediglich mit Javascript arbeiten kann ?  Im Archiv gibts ein paar Nachfragen und Lösungsangebote, aber sie verweisen alle auf iFrames oder SSI oder den Einsatz weiterer Scripts (PERL oder PHP), was ich hier nicht nutzen kann. Auch das Beispiel aus dem Feature-Artikel von Daniel Thoma hilft mir leider nicht weiter ... Irgendwo hab ich auch den Hinweis gelesen, daß man in CSS mit "source-include:url(dateiname)" arbeiten könnte, aber beim W3C hab ich dazu nix gefunden, in SELFHTML auch nicht, und funktionieren tut es eh nicht.

:-(

Christoph S.

  1. Hallo,

    probier doch mal testweise, eine absolute URL zu datei2.htm im iFrame anzugeben.

    Wenn dies klappt, kann es sein, dass das Script (aus welchen Gründen auch immer) den Pfad URL/scripts als Speicherort für datei2.htm referenziert und nicht der Pfad von datei1.htm. Dies würde auch erklären, dass es klappt, wenn Du das JS in die Datei selbst einbaust.

    Teste doch auch mal das hier:

    document.write('<iframe src="../daten/datei2.htm" width="100%" height="100%"></iframe>');

    Viel Erfolg...

    Alex ;)

    1. hi Alex,

      probier doch mal testweise, eine absolute URL zu datei2.htm im iFrame anzugeben.

      ja, das wars ...

      Sowas aber auch. Manchmal hat man halt Tomaten vor den Augen ;-) Ich hätte das ja bloß mal über den lokalen Apache laufen lassen brauchen, grrrrrr

      danke

      Christoph S.