Moin!
Ich hab jetzt mal die Netscape Doku gewaelzt und n bisschen gecodet, und jetzt poste ich das einfach mal als Alternativvorschlag zu Jens' Variante. Ich hab's nur mit Netscape 4.08 en WinNT getestet, und da laeuft's gut. Den Scriptbereich habe ich gleich mal als JS 1.2 deklariert, da ich annehme, dass es zumindest mit JS 1.0 nicht laeuft (aber solche Browser sind zum Glueck selten).
Das Script arbeitet so, dass beim Abschicken eines Beitrags die Inhalte der Felder in einem Cookie gespeichert und beim naechsten Laden einer solchen Seite wieder ausgelesen werden. Dazu ist einfach das Script im HEAD einzufuegen (oh Wunder!) sowie das BODY- und das FORM-Tag abzuaendern (alles am Beispiel der self_forum_neu.html):
<body bgcolor=#FFFFFF text=#000000 link=#AA5522 vlink=#552200 alink=#000000 onLoad="LoadValues();">
<FORM NAME="posting" METHOD="POST" ACTION="/cgi-local/self_forum.pl" onSubmit="SaveValues(); return true;">
Kurz zum Script selber: Im Anfangsbereich sind ein paar "Konstanten", um Anpassungen leichter vornehmen zu koennen. SaveValues() maskiert Sonderzeichen der eingegebenen Werte und speichert diese dann in einem (einzigen) Cookie zusammen mit der Angabe der Expire-Time (1 Jahr) und dem Pfad, fuer den dieses Cookie gelten soll (also fuer alles unterhalb von "/selfaktuell"). Und in LoadValues() werden die Werte eben wieder ausgelesen, kaum zu glauben, was? In der doppelten FOR-Schleife wird fuer jedes Element von fields (festgelegt durch FIELDS) nach dem zugehoerigen Cookiewert gesucht. (Die kann man sicher noch ein bisschen optimieren.) Dadurch kann man irgendwann auch mal ein Feld hinzufuegen oder wegnehmen, ohne dass ein entsprechend abgeaendertes Script nicht mehr mit bereits gesetzten Cookies zurechtkommt (hab ich zwar nicht getestet, aber ich vertrau dem jetzt einfach mal).
Ein Problem koennte es vielleicht mit dem Namensfeld geben (bei mir funzt es, aber in anderen Browsern?). Letztlich wird zum Lesen oder Einsetzen eines Wertes aus dem oder in das Formular auf document.[form_name].[field_name].value zugegriffen. form_name ist in meinem Beispiel immer posting, field_name ist der Reihe nach name, email, url und img. Beim Namensfeld steht also document.posting.name.value da. Nur dummerweise ist name eine Eigenschaft des form-Objektes, was einen Konflikt ergeben koennte. Wie gesagt, bei mir funzt es. Falls andere Browser mackern, muessten wir vielleicht mal mit document.posting.elements["name"].value herumexperimentieren.
Na gut, dann also hier die zwei Funktionen:
<SCRIPT LANGUAGE="JavaScript1.2"><!--
var FORM_NAME = "posting";
var FIELDS = "name,email,url,img";
var TIME_TO_LIVE = 365 * 24 * 3.6E6; // one year
var VALID_COOKIE_PATH = "/selfaktuell"; // for offline testing use just a /
function LoadValues() {
var cookie, i;
var values, pair;
var fields, field_count;
fields = FIELDS.split(',');
field_count = fields.length;
if (!(cookie = document.cookie)) return false;
values = cookie.split(/&/);
if (values.length != field_count) return false;
for (i=0; i<field_count; i++) {
for (j=0; j<field_count; j++) {
if (values[j].indexOf(fields[i] + "=") == 0) {
pair = values[j].split(/=/);
eval("document." + FORM_NAME + "." + pair[0] + ".value = "" +
unescape(pair[1]).replace(/"/, "\"") + "";");
}
}
}
return true;
}
function SaveValues() {
var fields, field_count;
var i;
var cookie, expire;
fields = FIELDS.split(',');
field_count = fields.length;
cookie = "";
for (i=0; i<field_count; i++) {
cookie += fields[i] + "=" + escape(eval("document." + FORM_NAME + "." + fields[i] + ".value"));
if (i < field_count - 1) cookie += "&";
}
expire = new Date();
expire.setTime(expire.getTime() + TIME_TO_LIVE);
document.cookie = cookie + "; EXPIRES=" + expire.toGMTString() + "; PATH=" + VALID_COOKIE_PATH;
}
//--></SCRIPT>
Bye, Calocybe
P.S. Stefan, in der self_forum_neu.html fehlt nach der Themenbereichsauswahlbox (was fuer ein Wort!) das </TD>. ;-)