Peggy Schubert: Dynamischer Seitenaufbau mit IE und Netscape

Ich möchte vollkommen dynamische Seiten erstellen, die in den gängigen Browsern lauffähig sein sollen.
Dazu lese ich mit dem von Daniel Thoma zur Verfügung gestellten Java-Applet  (Jsfilopener.class - www.teamone.de/selfaktuell/artikel/jsfileop/artikel.htm) Textdateien aus, deren Inhalt dann an die entsprechenden Stellen auf der Seite ausgegeben werden.
Nun mein Problem. Mit dem IE klappt es meist einigermaßen, jedoch der Netscape bringt sofort die Fehlermeldung: JavaScriptError: type ‚javascript:' into Location for details, sobald Netscape das erste document.write ausgibt.
Schreibe ich vor jeden Seitenaufbau einen alert(), klappt manchmal die Ausgabe auch im Netscape. (Das ist mir aber auch schon im IE passiert.) Das sieht natürlich nicht so toll aus, da man stets ein Zwischenfensterchen bekommt.

Hier der Programmcode:

<HTML>
<HEAD>
<title>Dynamische HTML-Seite</title>
<SCRIPT language="JavaScript">
<!--

function lesen()
{
        var source = "";
        document.testname.setFile(window.location.href,'RUBRIKEN.TXT');
        source = document.testname.getFile();
        source="""+source+""";
        var Woerter=source.split("~");
        return Woerter;
}

function verweis(Woerter)
{
  var zahl=Woerter.length;
  zahl=(zahl-1)/2;
  stringauslese=new Array(zahl);
  k=0;
  for (i=1; i< Woerter.length;i=i+2)
  {
   stringauslese[k]=Woerter[i];
   rest=k % 2;
   if (rest!=0)
   {
    stringauslese[k]=stringauslese[k]+"_"+stringauslese[k-1];
    document.write("  "+"<a   onClick="window.name="+"'"
    +stringauslese[k]+"'" href="kurse.html" >"+stringauslese[k-1]+"</a>"+"<br>");
   }
   k++;
  }

}

function schreiben()
{
var ausgabe="";
ausgabe=lesen();
verweis(ausgabe);
}

//-->
</SCRIPT>

<body onLoad="schreiben()">

<APPLET code="JSfileopener.class" width=1 height=1 mayscript name="testname" >
<PARAM name="color" value="#FF7F00"></param>
</applet>
</BODY>
</HTML>

Die Textdatei sieht wie folgt aus:

~Datenbanken~ ~date~
~MCSE~ ~mcse~
~Projektmanagement~ ~proj~
~Rubriki~ ~rubr~
~Tabellenkalkulation~ ~tabe~
~Testrubrik~ ~test~
~Textverarbeitung~ ~text~

Kurzbeschreibung des Ablaufs:
In der Funktion lesen() wird die Textdatei ausgelesen und in ein Array geschrieben. Dabei erzeuge ich gleich einzelne Wörter ohne ~.

In der Funktion verweis() wird das jeweils erste Wort einer Zeile aus der Textdatei als Verweis in das aktuelle Dokument geschrieben. Diese verzweigen auf eine neue existierende html-Seite, wobei dieser Seite über den Window.name ein entsprechender Variablenwert übergeben wird, je nachdem, welcher Verweis ausgewählt wurde.

Wer kann mir so schnell wie möglich helfen? Schön wäre es, wenn es ohne CGI funktioniert. Läßt sich CGI nicht vermeiden, was müsste ich dann ändern?

Vielen Dank
Peggy

  1. Hallo...

    ...ich kann Dir zwar jetzt nicht ganz folgen, aber fehlt da nicht noch irgendwo ein document.open()?
    Im Prinzip wird dann zwar das alte Dokument "zerstört", aber ich denke, daß beim Weglassen dieses Befehls der Fehler passiert.

    Bsp.:
    var dateiInhalt = "<HTML><BODY> Hier irgendein Text (z.B. Deine Datei) </BODY> </HTML>";
    document.open();
    document.write(dateiInhalt);
    document.close();

    Gehts so?

    Viel Glück!

    1. Hallo,

      das löst aber nicht mein Problem.

      Gruß
      Peggy

  2. Hi Peggy,

    JavaScriptError: type ‚javascript:' into Location for details

    was steht denn in der Konsole nachdem du javascript: in die Adresszeile getippt hast?

    Schreibe ich vor jeden Seitenaufbau einen alert(), klappt manchmal die Ausgabe auch im Netscape.

    stattdessen einfach etwas warten ? (<body onLoad="setTimeout('schreiben();',3000);"> ?

    Vermutung: das Applet ist einfach noch nicht geladen (noch nicht gestartet, ...) , so dass dessen
    Methoden noch nicht zur Verfügung stehen.

    Gruss,
    Carsten

    1. Hi Peggy,

      JavaScriptError: type ‚javascript:' into Location for details

      was steht denn in der Konsole nachdem du javascript: in die Adresszeile getippt hast?

      Schreibe ich vor jeden Seitenaufbau einen alert(), klappt manchmal die Ausgabe auch im Netscape.

      stattdessen einfach etwas warten ? (<body onLoad="setTimeout('schreiben();',3000);"> ?

      Vermutung: das Applet ist einfach noch nicht geladen (noch nicht gestartet, ...) , so dass dessen
      Methoden noch nicht zur Verfügung stehen.

      Gruss,
      Carsten

      Hallo Carsten,

      ich bekomme die Meldung "Objekt unterstützt diese Eigenschaft oder Methode nicht."

      Auch wenn ich das Timeout setze und das alert() weglasse, kommt der gleiche Fehler.

      Ich habe von jemanden anderen erfahren, daß sich durch das document.write anscheinend die Seite selbst überschreibt. Das heißt ich muß ein neues Fenster öffnen, in das ich meine Verweise lade. Ist zwar nicht so schön, weil dann ein Fenster umsonst auf ist, aber vielleicht geht es wirklich nicht anders.

      Naja, ich werde weiter an meinem Problem basteln. Hab vielen Dank
      Peggy