Laden von Seiten im Dateisystem eines Rechners

  • Hallo,
    ich habe seit Firefox 3.0.x folgendes Problem:
    unsere Applikation erzeugt zu Publishingzwecken Html-Dateien im lokalen Dateisystem eines Windowsrechners. Diese bieten innerhalb eines Frames Verweise (HREFs) zur Navigation innerhalb dieser Html-Dateien. Zum Teil werden diese über Javascript dynamisch erzeugt. Die Verzeichnisstruktur ist (beispielhaft) immer so: C:/Temp/20090206.001/index.html. Die verlinkten Dokumente sind im Unterverzeichnis index_files enthalten. Dort wird z.B. das Dokument form2.htm#tag5 referenziert. Seit der neuen FF Version wird nun diese Datei (wenn das HREF dynamisch per Javascript erzeugt wurde) mit der Fehlermeldung "Die Dateien unter /C:/Temp/20090206.001/form2.htm#tag5 konnten nicht gefunden werden" nicht mehr angezeigt. Wie man sieht fehlt das Unterverzeichnis index_files in der Pfadangabe. Java und Javascript sind aktiv. Das Problem besteht nicht beim IE, Opera und FF Versionen vor 3.0.x.
    Hat jemand ein ähnliches Problem oder hat jemand zu diesem Problem schon was herausgefunden?
    Vielen Dank für die Hilfe.

    Hans Meidinger

  • erst mal vielen Dank für die Antwort. Unten ist die JS Funktion angefügt. Das Problem tritt auf, wenn über das HREF die showDoc-Funktion aufgerufen wird. Die Dateireferenz, die als Argument übergeben wird, enthält offensichtlich wie beschrieben das Unterverzeichnis index_files nicht (möglicherweise ist das auch aus Sicherheitsgründen so gewollt). Wenn man das Unterverzeichnis im aufrufenden HTML-Dokument anfügt, dann funktioniert der Aufruf. Allerdings geht's dann im IE und in Opera nicht mehr.
    Ich konnte bis jetzt keine Einstellung in FF finden, die sich auf dieses Verhalten irgendwie auswirkt.

    function selectFrom(coll){
    var win;
    win = this;
    win.document.open();

    if(win != null) {
    str = '<HTML><HEAD><TITLE></TITLE>';
    str = str + '\n<SCRIPT><!--\n\tfunction showDoc(ref, tags){ noo = open(ref); for(i = 0; i <tags> </SCRIPT>';

    if (document.layers)
    str = str + '\n<link>'
    else
    str = str + '\n<link>';

    str = str + '</HEAD><BODY>';
    str = str + '\n<P>Dieses Objekt ist in mehreren Dokumenten enthalten:</P>';
    str = str + '\n<TABLE>';
    str = str + '\n<TR><TD>Verf&uuml;gbare Dokumente:</TD></TR>';
    for(i = 0; i < coll.length; i++){
    tmp = "'" + coll[i][0] + "'";
    tmp2 = "new Array(";
    tmp2 = tmp2 + "'" + coll[i][1][0] + "'";
    for(j = 1; j < coll[i][1].length; j++){
    tmp2 = tmp2 + ", '" + coll[i][1][j] + "'";
    }
    tmp2 = tmp2 + ")";
    str = str + '\n<TR><TD><A HREF="javascript: showDoc(' + tmp + ', ' + tmp2 + ')">' + coll[i][2] + '</A></TD></TR>';
    }
    str = str + '\n</TABLE>';
    win.document.write(str);
    } else {
    alert("JavaScript Error");
    }

    win.document.close();
    }

  • Das Problem scheint mit den Frames zusammen zu hängen. Opera setzt den Pfad relativ zum Subframe, der Fx hingegen relativ zum Topframe. So liefern window.location und document.location in der Funktion selectFrom im Fx verschiedene Ergebnisse, wobei ersteres dann als Referenz verwendet wird.

    Lösungsmöglichkeiten sehe ich zweierlei (unter Beibehaltung der Struktur):

    1. das verwenden einer Browserweiche in JS

    oder eleganter

    2. das verwenden des base-Elements im head

    Code
    function selectFrom(coll){
    	var win;
    	win = this;
    	var loc = document.location.href; // konserviert die Adresse des Subframes
    	win.document.open();
    
    
    	if(win != null) {
    		str = '<HTML><HEAD><BASE HREF="'+loc+'"><TITLE=""></TITLE>';

    Mit der Modifikation funktioniert es sowohl im Fx als auch im Opera.

  • Hallo Boardraider,
    ich habe noch ein weiteres Problem entdeckt. In der erzeugten Site ist optional eine Textsuche integriert. Diese funktioniert grob so: in einem hidden Form werden alle potenziellen Fundstellen hinterlegt. Ein Javascriptprogramm sucht daraus die zum eingebenen Suchbegriff passenden Fundstellen und baut eine Ergebnisliste mit HREFS auf die Fundstellen zusammen. Diese Ergebnisliste wird in einen Subframe des Topframes geschrieben. Diese Ergebnisliste wird nun ab Fx 3.0 zwar noch aufgebaut und angezeigt, allerdings bleibt schon hier der Mauscursor mit einer Sanduhr "hängen" und im Anschluß funktionieren die HREFs nicht mehr (möglicherweise auch ein Problem mit der Base.ref?).
    Der HTML-Tidy Validierer meldet keinen Scriptfehler.
    Ein Beispiel fände sich hier:
    http://rapidshare.com/files/197515256/20090213.001.zip.html

    Vielen Dank und viele Grüße,
    Hans