Hallo junglist(?),
Wie kann ich ein Javascript erstellen, was bei Besuch meiner Homepage ein Fenster öffnet und mir die besuchten Seiten meiner Homepage in listenform anzeigt und gleichzeitig nach und nach schon angesehene seiten in die liste hinzufügt?
Mit Nachdenken. ;-)
Es gibt zwar ein Objekt window.history in Javascript, aber wie SELFHTML Dir verrät, kannst Du damit nur vor und zurück springen, nicht das Ding auslesen.
http://selfhtml.teamone.de/javascript/objekte/history.htm
Also nochmal Nachdenken.
Du willst...
(a) ... daß eine Seite ihre URI "weiß".
(b) ... daß die Seite diese URI einer Liste von vorher besuchten URIs hinzufügt.
(c) ... daß eine Seite diese eben genannte Liste von der vorherigen Seite empfangen kann und an eine andere Seite weitergeben kann.
(d) ... daß eine Seite diese Liste (inklusive ihrer eigenen angehängten URI) dann an eine bestimmte Stelle in ihrem eigenem Quelltext reinschreibt.
Zu (a)
Das ist leicht. Du kannst das direkt im Javascripttext der Seite reinschreiben...
var url = "http://www.domain.tld/seite.html";
oder das ganze mit Javascript auslesen:
http://selfhtml.teamone.de/javascript/objekte/location.htm
Zu (b)
Auch leicht. Beschäftige Dich mal mit Arrays:
http://selfhtml.teamone.de/javascript/objekte/array.htm
Zu (d)
Ja, erst (d). Das geht auch noch. Standard, um etwas ins Dokument reinzuschreiben ist die Funktion document.write()
http://selfhtml.teamone.de/javascript/objekte/document.htm#write
Geschickter bei einer etwas verschachtelten Seite, ist es wahrscheinlich, das via document.createElement(), document.createTextNode() etcetera zu machen:
http://selfhtml.teamone.de/javascript/objekte/document.htm#create_element
Wird etwas verwurstelt, ist aber auch noch überschaubar.
Zu (c)
Schwieeerig. Klassisch kann man das über Cookies machen.
http://selfhtml.teamone.de/javascript/objekte/document.htm#cookie
Dummerweise gibt es viele Nutzer, die Cookies, die einfach Dinge auf ihrem Rechner speichern, nicht mögen und diese ausschalten. Ich wäre da ein Beispiel.
Dann gibt es einen Feature-Artikel zum Thema Wertübergabe mit Javascript zwischen verschiedenen Dokumenten.
http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe/index.htm
Aber wenn Du den Artikel aufmerksam liest, wirst Du auf ein Problem stoßen:
Du kannst nur einen langen String übergeben der noch dazu nur Buchstaben, Ziffern sowie der Unterstrich enthalten darf. Du kannst zwar alle anderen Zeichen in diese Form konvertieren, das wird aber auch schon wieder lästig. Und Du mußt das Array, daß die URLs enthält in diese Form konvertieren. Und wenn Du dann nicht nur die URL übergeben willst, sondern auch einen eventuellen Linktitel (Das Ding zwischen <a> und </a>) mitgeben willst, mußt Du womöglich noch ein zweites Array mit den Linktiteln generieren.
Ok, bei einem Projekt mit einer begrenzten Anzahl Seiten, könntest Du ein externen Javascript erstellen und darin alle Seiteninformationen mit kleinen, bequemen Codes verschlüsseln (a12 bedeutet http://www.name.tld/seite123.html und Linktitel "How To Make Love"). Aber das ist auch ein ziemlicher Aufwand, weil um das ganze in die Seite zu schreiben, mußt Du diese Codes wieder der richtigen URL und dem richtigen Linktitel zuordnen.
Aber Du hast noch ein viel wichtigeres Problem:
Erinnerst Du Dich daran, was ich über Cookies sagte? Daß sie nicht jeder mag und deswegen in seinem Browser ausstellt. Und Javascript mögen einige auch ziemlich ungern. Sehr ungern. Und das stellen Sie dann auch aus. Schrecklich sowas. Also ist eine Javascriptlösung kaum praktikabel.
Also nochmal nachdenken:
Wer dürfte denn außer dem Besucher Deiner Seite noch am besten wissen, welche Einzelseiten er besucht hat? Na? Genau, der Server. Also ist dies die beste Stelle um dort anzusetzen. Mit serverseitigen Sprachen, PHP, Perl, SSI oder sowas, die das auf dem Server berechnen und dann in die ausgelieferte Seite einfügen. Aber das ist nicht mehr mein Metier. Und dürfte auch etwas kniffelig werden.
Sollen wir nochmal nachdenken?
Ist Dir dieses Feature soooo wichtig? Wirklich?
- Tim
PS: Ok, meine ganze obige Beschreibung nützt letztendlich kaum was. Und ich muß zugeben, ich wußte das auch schon vorher, daß hier was serverseitiges das richtige ist. Aber ich wollte einfach wissen, wie ich so etwas in Javascript machen würde. Es ging mir also garnicht um Dich, sorry. :-)
PPS: Wenn Du sehr viel freie Zeit hast, kannst Du obiges Ding gerne mal implementieren und hier im Forum vorstellen. Aber ich vermute, ich habe Dich etwas abgeschreckt. :-)