Browserhistory
Udo
- javascript
Moin Moin aus Brasilien,
auf meiner Homepage habe ich mir ein Layout mit DIV Containern gebastelt. (cf. http://minerva.ufpel.edu.br/~usinks.unipampa/). Zum hin und her navigieren habe ich mir ein Script gebastelt, dass die jeweils aufgerufenen Container in einen Array speichert und ich so eine History-Back Funktion simulieren kann (mittels der simbolisierten Pfeile oben und unten im Layout). Nur die meisten Benutzer klicken aus Gewohnheit die Back und Forward Buttons der Browser um zurückzukommen. Gibt es eine Möglichkeit in die Browser-History die aufgerufenen Container reinzuschreiben, so dass man sie in derartigen Layouts benutzen kann.
Danke für die Hilfe!
Gruss aus dem saukalten Südbrasilien!
Udo
Hallo Udo,
Nein auf die History hast du keinen Schreibzugriff.
Gruß,
Dieter
Hallo Udo und Dieter,
Nein auf die History hast du keinen Schreibzugriff.
kleiner Einspruch: siehe history
Allerdings möchte ich auch noch zu bedenken geben, dass es in meinen Augen höchst fragwürdig und überflüssig ist, Benutzern etwas anzubieten, was sie eh schon in gewohnterer Form in ihrem Browser haben.
Eigentlich kann man pauschal sagen:"Don't touch the history!".
Das Einzige, was man m.M.n. damit erreichen kann ist, dass man die Besucher verärgert und vergrault.
Gruß Gunther
Hallo Dieter,
kleiner Einspruch: siehe history
Worauf beziehst du dich?
Nein auf die History hast du keinen Schreibzugriff.
sorry, ich dachte*, das wäre klar.
[Zitat]
Neben der Bewegung in der History ist es lediglich erlaubt, mit der Methode Seite location.replace() den history-Eintrag der zuletzt besuchten Seite zu überschreiben.
[/Zitat]
Gruß Gunther
*Ich weiss, mit dem Denken ist das so eine Sache ;).
Hi,
Worauf beziehst du dich?
Nein auf die History hast du keinen Schreibzugriff.
sorry, ich dachte*, das wäre klar.
[Zitat]
Neben der Bewegung in der History ist es lediglich erlaubt, mit der Methode Seite location.replace() den history-Eintrag der zuletzt besuchten Seite zu überschreiben.
[/Zitat]
ja, diese Fehlinformation sollte mal korrigiert werden. history.replace() _verhindert_ das Eintragen einer Seite in die History. Und das Nichtbeschreiben der History ist definitiv kein Schreibzugriff ;-)
Cheatah
Yerf!
[Zitat]
Neben der Bewegung in der History ist es lediglich erlaubt, mit der Methode Seite location.replace() den history-Eintrag der zuletzt besuchten Seite zu überschreiben.
[/Zitat]ja, diese Fehlinformation sollte mal korrigiert werden. history.replace() _verhindert_ das Eintragen einer Seite in die History.
Hä? In meinen Browsern (fast alles Mögliche hier) wird tatsächlich der aktuelle History-Eintrag durch den neuen ersetzt (überschrieben). Ein Verhindern wäre ja, wenn die *neue* Seite nicht in der History landen würde...
Gruß,
Harlequin
Hi,
Hä? In meinen Browsern (fast alles Mögliche hier) wird tatsächlich der aktuelle History-Eintrag durch den neuen ersetzt (überschrieben). Ein Verhindern wäre ja, wenn die *neue* Seite nicht in der History landen würde...
nein. Bevor Du die Seite wechselst, ist die _aktuelle_ Seite noch nicht _Geschichte_, also history.
Cheatah
Yerf!
nein. Bevor Du die Seite wechselst, ist die _aktuelle_ Seite noch nicht _Geschichte_, also history.
Hm, zumindest im HTTP-Kontext ist sie _Geschichte_, denn der Übertragungsvorgang ist bereits abgeschlossen.
Gruß,
Harlequin
Hi,
nein. Bevor Du die Seite wechselst, ist die _aktuelle_ Seite noch nicht _Geschichte_, also history.
Hm, zumindest im HTTP-Kontext ist sie _Geschichte_, denn der Übertragungsvorgang ist bereits abgeschlossen.
da bin ich der erste, der Dir zustimmt :-) nur ist die History eines Clients leider kein HTTP-Kontext.
Cheatah
Hallo,
[Zitat]
Neben der Bewegung in der History ist es lediglich erlaubt, mit der Methode Seite location.replace() den history-Eintrag der zuletzt besuchten Seite zu überschreiben.
[/Zitat]ja, diese Fehlinformation sollte mal korrigiert werden.
Der Text mag vielleicht missverständlich klingen, aber ich seh nicht, was an der Aussage falsch ist. Offenbar sahen die JavaScript-Erfinder die gegenwärtige Seite durchaus als Teil der History, sonst wäre eine Methode »history.replace«, womit diese in der History ersetzt wird, unsinnig.
history.replace() _verhindert_ das Eintragen einer Seite in die History. Und das Nichtbeschreiben der History ist definitiv kein Schreibzugriff ;-)
Na, das halte ich für Wortklauberei, zumal es »Replace« heißt, nicht »GoToURIAndPreventCurrentURIFromInsertingIntoHistory«.
Mathias
... sonst wäre eine Methode »history.replace«, womit diese in der History ersetzt wird, unsinnig.
Äj, ist es ja auch. Schließlich heißt es location.replace, nicht history.replace. ;)
Ich will den Besuchern meiner Seite ja auch nicht die History "vorschreiben", im Gegenteil ich will ermöglichen, dass sie "normal" genutzt werden kann.
Wenn man im Layout mehrere Layer hat, die mit document.getElementById('layername').style.display='block' an und mit document.getElementById('layername').style.display='none' wieder abgeschlaltet werden, dann werden keine History Daten an den Browser übergeben. Dazu habe ich mir ein Javascript gestrickt, dass die History simuliert. Das Problem ist das dieses Script nur über Links auf der Seite erreicht wird und nicht über die im Browser vorhandenen Buttons.
Gruss, Udo
Hallo Udo und Dieter,
Nein auf die History hast du keinen Schreibzugriff.
kleiner Einspruch: siehe history
Allerdings möchte ich auch noch zu bedenken geben, dass es in meinen Augen höchst fragwürdig und überflüssig ist, Benutzern etwas anzubieten, was sie eh schon in gewohnterer Form in ihrem Browser haben.
Eigentlich kann man pauschal sagen:"Don't touch the history!".
Das Einzige, was man m.M.n. damit erreichen kann ist, dass man die Besucher verärgert und vergrault.Gruß Gunther
Hallo Udo.
Wenn man im Layout mehrere Layer hat, die mit document.getElementById('layername').style.display='block' an und mit document.getElementById('layername').style.display='none' wieder abgeschlaltet werden, dann werden keine History Daten an den Browser übergeben. Dazu habe ich mir ein Javascript gestrickt, dass die History simuliert. Das Problem ist das dieses Script nur über Links auf der Seite erreicht wird und nicht über die im Browser vorhandenen Buttons.
Wenn du, wie viele JS-basierte Scripte, mit Ankern arbeitest, besteht dieses Problem nicht. Die Abarbeitung der Links könntest du per „return false“ unterbinden. Den Anker kannst du über http://de.selfhtml.org/javascript/objekte/location.htm#hash@title=location.hash auslesen.
Hallo Udo und Dieter,
Bitte zitiere vernünftig, danke.
Einen schönen Montag noch.
Gruß, Mathias
Hi,
Ich will den Besuchern meiner Seite ja auch nicht die History "vorschreiben", im Gegenteil ich will ermöglichen, dass sie "normal" genutzt werden kann.
das ist nett von Dir. Aber wenn es Dir ermöglicht würde, die History mit sinnvollen Werten zu füllen, dann wäre es jedem anderen ermöglicht, sie zu unlauteren Zwecken zu missbrauchen. Ergo:
Es darf nicht gehen. Vergisses[tm].
Hallo Udo und Dieter,
Zitiere bitte nur das, worauf Du Dich beziehst, und antworte in einer in Mitteleuropa üblichen Leserichtung, danke.
Cheatah
Hallo Udo,
du hast es ja so gewollt ;).
Ich will den Besuchern meiner Seite ja auch nicht die History "vorschreiben", im Gegenteil ich will ermöglichen, dass sie "normal" genutzt werden kann.
Nein, genau das verhinderst du ja mit deinem "Frame ähnlichen" Layout.
Darüber, warum man keine Frames verwenden sollte, gibt dir das Forums-Archiv erschöpfend Auskunft. Einer der Gründe ist genau der, dass man die History-Funktion nicht nutzen kann.
Wenn man im Layout mehrere Layer hat, die mit document.getElementById('layername').style.display='block' an und mit document.getElementById('layername').style.display='none' wieder abgeschlaltet werden, dann werden keine History Daten an den Browser übergeben. Dazu habe ich mir ein Javascript gestrickt, dass die History simuliert. Das Problem ist das dieses Script nur über Links auf der Seite erreicht wird und nicht über die im Browser vorhandenen Buttons.
Ein weiteres Problem ist u.a., dass man ohne Javascript nirgendwo hinkommt auf deiner Seite!
Von fehlendem Doctype, Tabellen für's Layout, nicht validem Code, etc., mal ganz abgesehen.
Ich kann dir nur empfehlen, die Struktur deiner Site nochmal gründlich zu überdenken und auf ein "normales" CSS-basiertes Layout (ganz ohne Frames) zu wechseln.
Gruß Gunther
Danke Gunther,
ohne mich wie die anderen "lieben" Antwortende anzukoffern (wg. Zitierweise etc.) hast du mir die Antwort gegeben. Ich muss zugeben, dass die Seite zunächst mit iframes erstellt war. Da ich von der "Beliebtheit" von iframes Wind bekommen habe, wollte ich dann alles (es ist ja bisher nur Text bis auf das Logo in der Titelzeile) in eine Datei schreiben und per Javasript an- und ausschalten. Funktioniert ja auch, bis auf das History Problem. Ob das jetzt valider Code etc. war, ist mir herzerfrischend egal (zunächst), denn das waren so ziemlich die ersten Javasripte, die ich in meinem Leben geschrieben habe.
Ich werde den Inhalt jetzt mal auf ein paar URLs verteilen und dann weitersehen.
Gruss, Udo
hi,
Wenn man im Layout mehrere Layer hat, die mit document.getElementById('layername').style.display='block' an und mit document.getElementById('layername').style.display='none' wieder abgeschlaltet werden, dann werden keine History Daten an den Browser übergeben.
Warum baust du deine Site denn auch so suboptimal auf?
Siehst du da irgendeinen Vorteil drin, der nicht nur ein eingebildeter wäre?
Der absolut überwiegende Teil der Sites im WWW fährt gut damit, eigenständigen Inhalten auch eigenständige URLs zu spendieren. Von diesem bewährten Konzept abzuweichen, nur um etwas "anders" zu machen, wäre reichlich blödsinnig.
gruß,
wahsaga